Avatar billede nubi19 Nybegynder
07. juni 2004 - 20:18 Der er 22 kommentarer og
1 løsning

indlæsning samt resize af jpeg i C, hvordan ?

Hejsa, jeg sidder og skal lave et program til automatisk resize af en forfærdeligt masse jpeg filer, så jeg skal kunne indlæse filen, aflæse dens størrelse, resize den og gemme den igen. Det er jo ret meget i en omgang, men deraf de 200 point :)

Det skal måske lige nævnes at jeg bruger BCB 4.0.
Avatar billede arne_v Ekspert
07. juni 2004 - 20:25 #1
Medmindre du er meget skrap til at programmere så skal du have fat i et
færdigt bibliotek.

Måske har BCB noget men jeg kender ikke BCB.

De fleste bruger LIBJPEG
Avatar billede arne_v Ekspert
07. juni 2004 - 20:26 #2
Avatar billede arne_v Ekspert
21. juni 2004 - 22:20 #3
Kommet videre ?
Avatar billede nubi19 Nybegynder
22. juni 2004 - 10:59 #4
Desværre ikke, finder deres dokumentation mildest talt forvirrende :/ Der er jo utroligt mange filer at læse igennem.

Du skulle vel ikke lige vide hvilke filer der indeholder noget vigtigt/brugbart ?
Avatar billede arne_v Ekspert
22. juni 2004 - 18:58 #5
Beklager men jeg tror ikke at det er helt simpelt at lave.
Avatar billede nubi19 Nybegynder
22. juni 2004 - 22:21 #6
Hmmm har du jo nok ret i, nå jeg må bare fuske videre med det, kan ske det løser sig på et tidspunkt. Har heller ikke lagt så meget tid i det endnu pga. jeg har mange andre projekter kørende for tiden. Fik blot ideen pga. der hvor jeg arbejder fremkalder vi billeder, og utroligt mange kunder er trætte af 13:10 formatet på digitale fotos. Så ville jeg lave et lille util til dem, som let kunne lave deres billeder om til 15:10 (og som ikke koster noget, eller kræver teknisk engelsk). Men tak for din hjælp under alle omstændigheder, vil gerne give dig point, men så skal du lige lave et svar :)
Avatar billede arne_v Ekspert
22. juni 2004 - 22:23 #7
svar
Avatar billede arne_v Ekspert
22. juni 2004 - 22:24 #8
Har du prøvet at kigge på om der er eksisterende open source programmer som kan det
du vil (de bruger formentligt LIBJPEG) ?

Ganske vist er de sikkert GUI, men måske kan koden (derfor open source) give
nogle hints om hvordan man kalder LIBJPEG.
Avatar billede nubi19 Nybegynder
23. juni 2004 - 21:39 #9
Efter at have kigget selve LIBJPEG igennem synes jeg ikke det ser ud til at den tilbyder resize af billeder, så det er jo lidt ærgerligt. Men tak for din hjælp.
Avatar billede arne_v Ekspert
23. juni 2004 - 21:58 #10
Det indeholder ihvertfald det basale nemlig læsning og skrivning af JPEG
format.

Og hvis jeg husker rigtigt så er JPEG format ikke helt simpelt.

Lidt googling fandt følgende:

http://www.blazonry.com/scripting/upload-size.php

Og lad dig ikke narre af at det er PHP. PHP koden bruger system kaldet
til at køre 3 programmer som er skrevet i C og som er open source
og som du derfor kan hente koden til.

djpeg fra libjpeg
cjpeg fra libjpeg
pnmscale som er en del af netpbm

netpbm hører hjemme her http://netpbm.sourceforge.net/ og er også C kode
(var det ihvertfald for 8 år siden)
Avatar billede arne_v Ekspert
23. juni 2004 - 21:59 #11
Måske behøver du ikke engang møvle rundt med den kilde kode, hvis du kan finde
win32 binaries for de 3 programmer, så er det bare lige en hurtig wrapper
omkring.
Avatar billede nubi19 Nybegynder
24. juni 2004 - 10:27 #12
win32 binaries for djpeg, cjpeg og pnmscale ?
Bliver lige nødt til at spørge hvor jeg skulle finde dem henne ? (er nemlig lidt forvirret pt. :D) Men vil lige kigge nærmere på netpbm og endnu engang mange tak.
Avatar billede nubi19 Nybegynder
24. juni 2004 - 10:33 #13
Uhm nu vi er igang med dette emne: du ved ikke hvor jeg kan få netpbm som andet end tar.gz ? Kører på en Win platform og så er de filer lidt noget rod.
Avatar billede nubi19 Nybegynder
24. juni 2004 - 10:59 #14
Har fundet win32 binaries til:
pnmtojpeg
jpegtopnm
og pnmscale
så du behøver ikke svare på det alligevel :)
Avatar billede arne_v Ekspert
24. juni 2004 - 20:03 #15
Har du fået det til at virke ?

Evt. skal du jo lige lave en wrapper som finder alle filer i et dir
og kalder de 3 programmer i korrekt rækkefølge ...
Avatar billede nubi19 Nybegynder
24. juni 2004 - 23:33 #16
Jep har fået det til at virke, pnm filerne indeholder x,y dimensioner som tekst i starten af filen, så den kan jeg bare læse 10 tegn af så kører det også.

Men ja agter at lave en wrapper der tilføjer alle filer fra et dir, og så omdøber dem, laver mappe til dem evt. osv. og så shellexecuter de 3 programmer. Tusind tak for din hjælp :)
Avatar billede nubi19 Nybegynder
25. juni 2004 - 16:44 #17
Hmmm er løbet ind i et problem, ShellExecute vil af en eller anden grund ikke fungere med parameteren "filnavn > nyfil" som jo er nødvendig til jpegtopnm og omvendt da den bare kører det ud som stdout. Kan man omdirigere stdout på anden vis ?
Avatar billede nubi19 Nybegynder
25. juni 2004 - 17:56 #18
Hmmm fik lige en ide, jeg kunne jo lave en batch fil til det, og så eksekvere den, det tror jeg at jeg prøver.
Avatar billede arne_v Ekspert
25. juni 2004 - 21:30 #19
Argumenter til programmet skal vel over i seperat argument !?
Avatar billede bertelbrander Novice
25. juni 2004 - 23:44 #20
Hvis du vil fange stdout er du nok nødt til at bruge CreateProcess():

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp

Men der er sansynligvis lettere at lave det i en bat-fil.
Avatar billede nubi19 Nybegynder
26. juni 2004 - 17:42 #21
Argumenter til programmet bliver smidt over i et char[] til shellexecute, men det duer ikke.
Jeg laver en batch fil til formålet.
%1 %2 > %3
Burde kunne gøre det, og så bare fyre henholdsvis navnet på programmet (pnmtojpg) navnet på filen (temp.pnm) og så navnet på jpg'en. Men har ikke prøvet det endnu.
Avatar billede arne_v Ekspert
26. juni 2004 - 22:11 #22
Prøv gode gamle system !

system("dir > z.z");

virker fint hos mig.
Avatar billede nubi19 Nybegynder
27. juni 2004 - 11:30 #23
system ser ud til at fungere - kanon :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester