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


12

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

identify 1.jpg

但是,我得到了以下结果:

identify: no decode delegate for this image format `1.jpg' @ error/constitute.c/ReadImage/550.

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

yum install libjpeg libjpeg-devel

但是,我得到了:

Setting up Install Process
No package libjpeg available.
No package libjpeg-devel available.
Nothing to do

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

apt-get install libjpeg libjpeg-devel

但是,我得到了:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libjpeg
E: Unable to locate package libjpeg-devel

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


2
你为什么用yum?那是另一个发行版(Red Hat和Fedora)的软件包管理器,如果您曾经yum安装过imagemagick,我一点也不惊讶它找不到这些库!除非您真的知道自己在做什么,否则只应使用apt-get安装软件!此外,“ Ubuntu 12”还不够具体...有两个以“ 12”开头的Ubuntu版本:12.04和12.10。Ubuntu版本基于发布日期:12年4月(第04个月)发布了12.04,12年10月发布了12.10。请确定并指定!
2012年

我有32位Ubuntu版本12.04(精确),我没有用yum安装imagemagick,而是将tar xvfz ImageMagick.tar.gz,cd ImageMagick-6.8.0,cd ImageMagick-6.8.0-4,。/ configure打包了。 ,make,sudo make install,sudo ldconfig / usr / local / lib
Samir Sabri 2012年

尝试apt-get install libjpeg-dev
Shashank Singla 2015年

这是一个非常不错的答案http://askubuntu.com/a/746195
L. Percy

在不支持JPEG预先包装的情况下,如何在任何情况下使用任何imagemagick软件包?就像卖没有奶酪,面包或番茄酱的比萨饼一样。
Sridhar Sarnobat

Answers:


11

我通过从源代码安装位于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

然后,我从源代码重新安装了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

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

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

这对我有用。我不得不添加出口LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:在/ usr / local / lib目录/在.profile文件
mv288

我只从源代码安装了第一个jpegsrc,并通过重新安装了ImageMagick apt-get,它也起作用。
kyng 2013年

6

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

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

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

但是通常,从源代码构建只会使事情变得不必要。

哦,顺便说一句,Red Hat和Ubuntu为软件包使用了不同的名称。因此,如果yum抱怨缺少包裹,则apt-get无法找到该名称的包裹也就不足为奇了。除非有充分的理由,否则不要在系统上混用软件包管理器。即使这样,也请先尝试其他所有选项。


我没有从源代码构建的特定原因,如果使用APT(apt-get,Synaptic,软件中心等)安装Imagemagick将解决JPG文件问题,我将继续使用它,能否请您指出如何安装Imagemagick像您一样使用APT?
萨米尔·萨布里

@SamirSabri:只需搜索软件中心或Synaptic。或使用制表符补全apt-get来发现命令:sudo apt-get install imagemagick
Scott Severance,2012年

顺便说一句,我强烈建议您在尝试使用我的方法进行安装之前,先删除所有以前安装imagemagick的尝试。否则,您可能会遇到冲突。
Scott Severance,2012年

尽管删除了以前的尝试,但是在识别jpg图像时出现错误,例如:sam @ ubuntu:〜/ RubymineProjects / project / tmp $ identify 1.jpg识别:此图像格式'1.jpg'的解码委托@ error / constitute.c / ReadImage / 550。
萨米尔·萨布里

3

请注意,该no decode delegate错误可能(相当混乱)是由于imagemagick(或其一部分)找不到文件而导致的。因此,在运行以重新安装imagemagick之前,请检查和identify -list format以及convert -list configure是否支持JPEG格式,如果支持,则问题可能出在其他地方。

例如,convert -resize 50% foo\ bar.jpg给我一个错误no decode delegate for this image format,但是convert -resize 50% 'foo bar.jpg'效果很好。


1

如果您刚刚安装了php5-imagick,请尝试同时安装完整的imagemagick软件包。这将安装所有必需的库,例如jpeg。

sudo apt-get install imagemagick

然后重新启动您的网络服务器以重新加载所有库:

sudo service apache2 restart

JPEG解码现在应该可以正常工作了。


0

你有没有尝试过 :

须藤apt-get install libjpeg62

如果以上命令不起作用,请通过以下链接。

http://psx-scene.com/forums/f150/help-install-libjpeg-libpng-ubuntu-9-10-livecd-64122/

让他们知道,如果有帮助,祝您好运... :)


我尝试了您的解决方案,得到了:正在读取程序包列表...已完成构建依赖关系树正在读取状态信息...已完成libjpeg62已经是最新版本。0个已升级,0个新安装,0个要删除和6个未升级。但是,在识别jpg图像时仍然出现错误:sam @ ubuntu:〜/ RubymineProjects / project / tmp $识别1.jpg识别:此图像格式'1.jpg'的无解码委托@ error / constitute.c / ReadImage / 550。
萨米尔·萨布里

好的,我发现了这个问题:blog.ericlamb.net/2008/11 / ...请检查并告知我,谢谢您的回复。
Rishi Kolvekar

在阅读您的最后评论之前,我已经将其修复,谢谢,我在下面的答复中提供了它
Samir Sabri 2012年

听起来很棒!:)
Rishi Kolvekar

0

| 最简单的方法 | 从软件中心下载“ Synaptic软件包管理器 ”。->删除了较旧的libjpeg软件包*->重新安装了libjpeg8&libjpeg-turbo8&libjpeg-turbo8-dev。

PS:我遇到了同样的错误。我花了两天时间才解决。尝试显示jpg图像时出现我的错误:

no decode delegate for this image format `jpeg' @ error/constitute.c/readimage/504

然后,我从软件中心下载“ Synaptic软件包管理器 ”。->删除了较旧的libjpeg软件包*->重新安装了libjpeg8&libjpeg-turbo8&libjpeg-turbo8-dev。

(* synaptics软件包管理器将显示与其他软件包的依赖关系,仅删除较旧的独立libjpeg软件包)

之后,我就可以打开JPEG图像而无需担心错误了。

希望能帮助到你 :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.