Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: mrBean 09. 02. 2012, 22:09:33

Název: ImageMagick a znak procenta
Přispěvatel: mrBean 09. 02. 2012, 22:09:33
Zdravím,
hledám řešení pro tento příkaz, který spouštím z dávkového souboru DOS/Windows:

Kód: [Vybrat]
for /r %%x in (*.pdf) do ^
convert -density 400 -shave "30%x30%" -quality 34%% "%%x" "%%x.jpg"

Snažím se do příkazu shave dostat procenta. Příkaz má oříznout okraje, které vznikají při převodu dokumentu pdf na obraz jpeg. Tato podoba ale nefunguje. Zkoušel jsem shave také zapsat takto:

-shave "30%%x30%%"
nebo
-shave "30\%x30\%"
ale ani jedna podoba není platná. Tak nevím jak to udělat, najde se tu někdo kdo tomu rozumí?
Název: Re:ImageMagick a znak procenta
Přispěvatel: Kriegel 10. 02. 2012, 08:58:05
Zdar,
zkus caretu:

A. Just as you can use a slash (\) as an escape character to pass a double quote ("), you can use a caret (^) as an escape character to pass a percent sign.

http://www.windowsitpro.com/article/registry2/how-can-i-pass-a-percent-sign-value-to-reg-exe- (http://www.windowsitpro.com/article/registry2/how-can-i-pass-a-percent-sign-value-to-reg-exe-)
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 10:23:18
Nezdá se že by to fungovalo:
Kód: [Vybrat]
for /r %%x in (*.pdf) do ^
convert -density 400 -shave "30^%x30^%" -quality 34%% "%%x" "%%x.jpg"
V dávce dává příkaz:
convert -density 400 -shave "30^" -quality  ...
Název: Re:ImageMagick a znak procenta
Přispěvatel: Kriegel 10. 02. 2012, 11:03:18
funguje normalne %%, ale protoze jsou windows takove, jake jsou, tak problem je v nazvu promenne

Mas tam for %%x in a dale se pak v parametru -shave objevuje dalsi, jakoze escapovane x (krat) 30%%x

A to je kamen urazu, zmen si nazev promenne na neco jineho nez x, odstran uvozovky z parametru a jede to... jen mi to pada na chybe v ghostscriptu, ale to bude nejaky lokalni problem...
Expanduje se to v poradku
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 12:49:44
Mně to stále nejede:
Kód: [Vybrat]
for /r %%f in (*.pdf) do ^
convert -density 400 -shave 30%x30% -quality 34%% "%%f" "%%f.jpg"

Kód: [Vybrat]
for /r %%f in (*.pdf) do ^
convert -density 400 -shave 30%%x30%% -quality 34%% "%%f" "%%f.jpg"
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 12:53:32
Na čem to zkoušíš na linuxu nebo Windowsu? Jestli na Windowsu můžeš sem hodit jak tom máš? A funguje ti to ořezávání?
Název: Re:ImageMagick a znak procenta
Přispěvatel: Kriegel 10. 02. 2012, 14:11:54
na woknech, jsem musel kvuli tobe instalovat im :P

for %%Y in (*.pdf) do "C:\Program Files\ImageMagick-6.7.5-Q16\convert.exe" -density 400 -shave 30%%x30%% -quality 34%% %%Y %%Y.jpg

jak rikam, nefunguje mi to kvuli ghostscriptu, ale to je lokalni problem, obsah te tadvky se expanduje ok...

D:\tmp>"C:\Program Files\ImageMagick-6.7.5-Q16\convert.exe" -density 400 -shave 30%x30% -quality 34% montage.pdf montage.pdf.jpg
Název: Re:ImageMagick a znak procenta
Přispěvatel: Kriegel 10. 02. 2012, 14:15:45
jo a bacha na cestu ke convert.exe
we winnxp existuje utilita, ktera Converts FAT and FAT32 volumes to NTFS
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 17:48:30
Teď to vypadá, že syntaxe na vstupu je správná. Ale zase mi to píše chybu.
"convert.exe: no necode delegate for this image format '...cesta k dokumentu pdf...'"

Když vynechám cestu a uvozovky ke convert, tak zase jiná hláška:
neplatný parametr 400

Před tím jak to bylo bez uvozovek u convert a  s uvozovkama kolem argumentů tak to fungovalo ale bez shave.
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 17:50:40
no decode delegate for this image format ...
Název: Re:ImageMagick a znak procenta
Přispěvatel: Kriegel 10. 02. 2012, 18:03:39
nainstaluj ghostscript, bez toho to nepujde... pokud mas, tak pohledej v config/delegates.xml
zbytek najdes na netu...

a nebo radsi nainstaluj VirtualBox, v nem preferovane distro a namisto sr.ni se s windowsama bez na skopek
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 18:05:14
Aha, já už ten GS odisntaloval... Myslel jsem že to nepotřebuju, když používám IM.
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 18:35:22
Díky moc, konečně to funguje!

Ale ještě tam je problém. Adresáře a možná i soubory obsahují mezery takže to musí být v závorkách
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 19:41:44
No a nemohl by si mi poradit ještě co může způsobovat tyto chyby? To vypadá, že se mi povedlo nakonvertovat tak 8 souborů a zbytek nic:

   **** Warning: File has insufficient data for an image.
libpng error: Write Error
Error: /VMerror in --showpage--
VM status: 3 935695 2253216
Current allocation mode is local
Last OS error: 28
GPL Ghostscript 9.04: Unrecoverable error, exit code 1
convert.exe: `%s': %s "P:/PROGRAMY/grafika/editace/GhostScript9.04/bin/gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dEPS
Crop -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r400x400" -g67533x50656  "-sOutputFile=C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-zVIp4tf7-12275968" "-fC:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-njK22eLq" "-fC:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-XXK6mIPn" @ error/pdf.c/InvokePDFDelegate/199.convert.exe: Postscript delegate failed `D:\Europe\Cyprus\enroute.pdf':

No such file or directory @ error/pdf.c/ReadPDFImage/667. convert.exe: unable to open image `D:\Europe\Cyprus\enroute.pdf.jpg': No such file or directory @ error/blob.c/OpenBlob/2614.

D:\Europe>"c:\program files\ImageMagick-6.7.5-Q8\convert.exe" -density 400 -shave 30%x30% -quality 34% D:\Europe\Czech_republic\lower.pdf D:\Europe\Czech_republic\lower.pdf.jpg -density 400 -shave 30%x30% -quality 34% D:\Europe\Austria\upper.pdf D:\Europe\Austria\upper.pdf.jpg
convert.exe: unable to open image `D:\Europe\Czech_republic\lower.pdf.jpg':
 No such file or directory @ error/blob.c/OpenBlob/2614.

D:\Europe>"c:\program files\ImageMagick-6.7.5-Q8\convert.exe" -density 400 -shave 30%x30% -quality 34% D:\Europe\Czech_republic\upper.pdf D:\Europe\Czech_republic\upper.pdf.jpg -density 400 -shave 30%x30% -quality 34% D:\Europe\Austria\upper.pdf D:\Europe\Austria\upper.pdf.jpg
   **** Warning: xref subsection header has extra characters.
   **** Warning:  An error occurred while reading an XREF table.
   **** The file has been damaged.  This may have been caused
   **** by a problem while converting or transfering the file.
   **** Ghostscript will attempt to recover the data.
   **** Warning:  There are objects with matching object and generation
   **** numbers.  The accuracy of the resulting image is unknown.

   **** This file had errors that were repaired or ignored.
   **** The file was produced by:
   **** >>>> Acrobat Distiller 6.0 (Windows) <<<<
   **** Please notify the author of the software that produced this
   **** file that it does not conform to Adobe's published PDF
   **** specification.

convert.exe: unable to open image `D:\Europe\Czech_republic\upper.pdf.jpg': No such file or directory @ error/blob.c/OpenBlob/2614.

D:\Europe>"c:\program files\ImageMagick-6.7.5-Q8\convert.exe" -density 400 -shave 30%x30% -quality 34% D:\Europe\Denmark\lower.pdf D:\Europe\Denmark\lower.pdf.jpg -density 400 -shave 30%x30% -quality 34% D:\Europe\Austria\upper.pdf D:\Europe\Austria\upper.pdf.jpg
convert.exe: unable to open image `D:\Europe\Denmark\lower.pdf.jpg': No such file or directory @ error/blob.c/OpenBlob/2614.

D:\Europe>"c:\program files\ImageMagick-6.7.5-Q8\convert.exe" -density 400 -shave 30%x30% -quality 34% D:\Europe\Denmark\upper.pdf D:\Europe\Denmark\upper.pdf.jpg -density 400 -shave 30%x30% -quality 34% D:\Europe\Austria\upper.pdf D:\Europe\Austria\upper.pdf.jpg
convert.exe: unable to open image `D:\Europe\Denmark\upper.pdf.jpg': No such file or directory @ error/blob.c/OpenBlob/2614.

D:\Europe>"c:\program files\ImageMagick-6.7.5-Q8\convert.exe" -density 400 -shave 30%x30% -quality 34% D:\Europe\Estonia\enroute.pdf D:\MAPY\Europe\Estonia\enroute.pdf.jpg -density 400 -shave 30%x30% -quality 34% D:\MAPY\Europe\Austria\upper.pdf D:\Europe\Austria\upper.pdf.jpg
   **** Warning: File has unbalanced q/Q operators (too many q's)

   **** This file had errors that were repaired or ignored.
   **** Please notify the author of the software that produced this
   **** file that it does not conform to Adobe's published PDF
   **** specification.

convert.exe: unable to open image `D:\Europe\Estonia\enroute.pdf.jpg': No such file or directory @ error/blob.c/OpenBlob/2614.

D:\Europe>"c:\program files\ImageMagick-6.7.5-Q8\convert.exe" -density 400 -shave 30%x30% -quality 34% D:\Europe\Finland\lower.pdf D:\Europe\Finland\lower.pdf.jpg -density 400 -shave 30%x30% -quality 34% D:\Europe\Austria\upper.pdf D:\Europe\Austria\upper.pdf.jpg
Error: /ioerror in --showpage--
Operand stack:
   1   true
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval-
-   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   fa
lse   1   %stopped_push   1926   1   3   %oparray_pop   1925   1   3   %oparray_
pop   1909   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1
1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--
  1809   0   9   %oparray_pop   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1170/1684(ro)(G)--   --dict:1/20(G)--   --dict:82/200(L)--   --dict:82
/200(L)--   --dict:108/127(ro)(G)--   --dict:291/300(ro)(G)--   --dict:24/30(L)-
-   --dict:6/8(L)--   --dict:21/40(L)--
Current allocation mode is local
Last OS error: No space left on device
GPL Ghostscript 9.04: Unrecoverable error, exit code 1
convert.exe: `%s': %s "P:/PROGRAMY/grafika/editace/GhostScript9.04/bin/gswin32c.exe" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dEPS
Crop -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pamcmyk32" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r400x400" -g10394x14506 -dUseCIEColor  "-sOutputFile=C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-zyXkMOEq-12275968" "-fC:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-ZpF7Sh2b" "-fC:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/magick-0DSQLmkI" @ error/pdf.c/InvokePDFDelegate/199.convert.exe: Postscript delegate failed `D:\Europe\Finland\lower.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/667.convert.exe: unable to open image `D:\Europe\Finland\lower.pdf.jpg': No such file or directory @ error/blob.c/OpenBlob/2614.

D:\Europe>"c:\program files\ImageMagick-6.7.5-Q8\convert.exe" -density 400 -shave 30%x30% -quality 34% D:\Europe\Finland\upper.pdf D:\Europe\Finland\upper.pdf.jpg -density 400 -shave 30%x30% -quality 34% D:\Europe\Austria\upper.pdf D:\Europe\Austria\upper.pdf.jpg
convert.exe: unable to open image `D:\Europe\Finland\upper.pdf.jpg': No such file or directory @ error/blob.c/OpenBlob/2614.
Název: Re:ImageMagick a znak procenta
Přispěvatel: dustin 10. 02. 2012, 22:43:57
Tu hlášku "Last OS error: No space left on device" jsi kontroloval?
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 10. 02. 2012, 23:35:31
To jsem si nevšiml. Ale místo jsem kontroloval a je tam ještě mnoho místa na disku. To nedává smysl.

No a jedna příčina chyby by mohla být v tom, že místo abych přejmenoval soubor na neco.pdf tak davam neco.pdf.jpg. Pri dalsim pokusu cteni souboru z adresare se nacita *.pdf , takže možna se znovu nacita *.pdf.jpg ? I když ale *.pdf.jpg neni *.pdf.* že?
Název: Re:ImageMagick a znak procenta
Přispěvatel: dustin 10. 02. 2012, 23:50:29
Mrkni se na příkaz mogrify z balíku imagemagicku. Možná ti vyřeší starosti s koncovkami souborů :-)
Název: Re:ImageMagick a znak procenta
Přispěvatel: mrBean 11. 02. 2012, 11:12:06
Právě že morgify nevyhovuje, ten jsem už zkoušel. Buď to bylo kvůli density nebo kvůli ořezávání. Už si nepamatuji. Tak či tak si myslím, že řešení koncovky musí být pro oba příkazy.
Název: Re:ImageMagick a znak procenta
Přispěvatel: Kriegel 13. 02. 2012, 11:52:45
bych rekl, ze ta pdf nekdo delal nohama, takze dalsi problemy prameni z toho...
jsem to cvicne zkousel na paru pdf a vsechno probehlo ok; jestli chces, tak to nekam dej a posli link...