如何添加对 JPEG 图像格式的支持

Sam*_*bri 15 imagemagick jpeg

安装 Imagemagick 后,我用 jpg 图像对其进行了测试,如下所示:

identify 1.jpg
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个结果:

identify: no decode delegate for this image format `1.jpg' @ error/constitute.c/ReadImage/550.
Run Code Online (Sandbox Code Playgroud)

然后,我尝试通过以下方式添加对 JPEG 格式的支持:

yum install libjpeg libjpeg-devel
Run Code Online (Sandbox Code Playgroud)

但是,我得到了:

Setting up Install Process
No package libjpeg available.
No package libjpeg-devel available.
Nothing to do
Run Code Online (Sandbox Code Playgroud)

我以为我需要更新 apt-get,我做到了:

apt-get install libjpeg libjpeg-devel
Run Code Online (Sandbox Code Playgroud)

但是,我得到了:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libjpeg
E: Unable to locate package libjpeg-devel
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来安装这些库?我正在使用 Ubuntu 12.04。

Sam*_*bri 12

我通过从源代码安装http://www.ijg.org/files/jpegsrc.v8c.tar.gz提供的 jpeg 编码库解决了这个问题。

cd /usr/local/src
tar xvfz jpeg-8c.tar.gz
cd jpeg-8c
./configure --enable-shared --prefix=$CONFIGURE_PREFIX
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

然后我从源代码重新安装了 ImageMagick:

cd /usr/local/src
tar xvfz ImageMagick-6.6.9-5.tar.gz
cd ImageMagick-6.6.9-5
export CPPFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
./configure --prefix=/usr/local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

现在它可以工作了,我已经像这样测试了它:

sam@ubuntu:~/RubymineProjects/project/tmp$ identify 1.jpg
1.jpg JPEG 128x106 128x106+0+0 8-bit sRGB 2.22KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)


Sco*_*nce 6

如果您决定从源代码构建 ImageMagick,您需要准备好手动解析所有依赖项。除非您有迫切需要,否则您应该从存储库(官方存储库或 PPA)在 Ubuntu 上安装所有软件。

如果您使用 APT(apt-get、Synaptic、软件中心等)安装 Imagemagick ,那么 JPG 文件就可以正常工作,正如我在我的机器上所确认的那样。

如果您从源代码构建的原因是获得更新的版本,请寻找跟踪最新版本的 PPA。如果您从源代码构建以帮助开发,那么您应该从 Imagemagick 人员那里找出从源代码成功构建它所需的条件。您可能需要./configure在运行之前指定一些标志或安装一些开发库./configure

但通常情况下,从源代码构建只会使事情变得不必要地复杂化。

哦,顺便说一下,R​​ed Hat 和 Ubuntu 对包使用不同的名称。因此,如果yum抱怨缺少包,那么apt-get找不到该名称的包也就不足为奇了。您不应该在系统上混合使用包管理器,除非您有充分的理由这样做。即便如此,请先尝试其他所有选项。