How can I convert multiple .jpg files to .eps files on Linux?
6 Answers
When using the ImageMagick's convert, it is a good practice to use the eps2 format. This make the resulting eps file much smaller because it uses the JPEG compression algorithm (DCT).
So, to convert a.jpg
to a.eps
do:
convert a.jpg eps2:a.eps
This of course, can be used in a shell script, to convert multiple JPG to EPS.
![](../../users/profiles/498634.webp)
- 12,527
- 5
- 31
- 45
![](../../users/profiles/1958943.webp)
- 451
- 4
- 2
-
I get the following errors when I execute : `convert: unable to open image `pic.jpg': ��. @ error/blob.c/OpenBlob/2489.` `convert: unable to open image `pic.jpg': @ error/blob.c/OpenBlob/2489.` `convert: missing an image filename `eps2:pic.eps' @ error/convert.c/ConvertImageCommand/2940.` What should I do? – Green Noob Feb 04 '15 at 04:33
-
Use imagemagick `mogrify` command instead of convert for multiple files. `mogrify -format eps3 *.png` – Raywell Sep 04 '17 at 09:21
You can use many tools. I recommend using convert
command from ImageMagick.
#!/bin/bash
# example 1
convert myfile.jpg myfile.eps
# example 2
for file in file1.jpg file2.jpg file3.jpg; do
echo convert "$file" $(echo "$file" | sed 's/\.jpg$/\.eps/')
done
To make example 2 run you need to remove the echo
inside the for
-loop. Make sure the commands it outputs are correct before removing it.
![](../../users/profiles/498634.webp)
- 12,527
- 5
- 31
- 45
According to user1958943, I used the convert tool as well. However, as the eps3 format gives an even better compression with similar quality as eps2, I suggest to use
convert a.jpg eps3:a.eps
By the way, this tool also works for png files (and also others) ...
Does anybody know which compression eps3 is using?
![](../../users/profiles/3058047.webp)
- 281
- 4
- 9
-
-
Version 3 is specified in appendix H of the following document: https://www-cdf.fnal.gov/offline/PostScript/PLRM2.pdf. The changes to version 2 are listed in section H.8. However, I am not sure whether you find the details about compression there... – tc88 May 02 '20 at 21:48
Another option is to combine jpegtopnm and pnmtops from the netpbm toolkit. This will however produce PS, not EPS.
for f in *.jpg
do
g=`echo "$f" | sed 's/\.jpg$/\.eps/'`
echo "$f -> $g" 1>&2
jpegtopnm $f | pnmtops > $g
done
![](../../users/profiles/17945.webp)
- 7,591
- 1
- 32
- 66
-
This produces a PNG file, not an EPS. You probably want to use `pnmtops` instead of `pnmtopng`. – the paul Sep 02 '13 at 23:57
-
I do this often and sometimes on Windows. Hence, I wrote a small online converter which uses convert:
Hope this can also help others.
![](../../users/profiles/447502.webp)
- 693
- 3
- 7
- 22