在Mac OS X上安装PIL时,我已经阅读了关于臭名昭着的_imaging C模块错误的其他帖子,并且在任何地方都没有提供任何解决方案,包括PIL常见问题解答,已经证明是有帮助的.
我从源代码新安装了最新版本的libjpeg和zlib.我已经在每个中编辑了Makefile,以便在32位版本的LD_FLAGS变量中包含选项-arch i386.PIL安装没有任何问题,打印到终端的安装摘要说JPEG,TIFF和PNG支持都可以.之后我尝试自我测试:
new-host:Imaging-1.1.7 ely$ python selftest.py 
*** The _imaging C module is not installed
出于各种原因常见这种情况.深入探讨,在这里我尝试直接在python中导入_imaging.
new-host:Imaging-1.1.7 ely$ python
ActivePython 2.7.1.4 (ActiveState Software Inc.) based on
Python 2.7.1 (r271:86832, Feb  7 2011, 11:33:10) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> import _imaging
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
  Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/_imaging.so …我需要解码(解压缩到位图)相当小(约1200*1200)的JPEG.问题是我需要快速完成.我试过libjpeg,而且速度很慢.我也尝试过BitmapFactory.decodeByteArray - 它有点快,但仍然不够快.还有什么选择?原生(C++)库是更受欢迎的.
PS我的JPEG直接在内存中创建.
PPS我想知道libjpeg比BitmapFactory.decodeByteArray慢得多.
我无法找到有关如何做到这一点的任何资源..任何人有任何想法或资源?!
我已经尝试更改./configure选项,我一次解决一个问题,但似乎这种方法可能需要永远...我当前的错误是..
在-ljpeg中检查jpeg_read_header ...没有配置:错误:libjpeg问题.(a | so).请查看config.log以获取更多信息.
我正在运行Snow Leopard.
Matt Mueller,任何帮助都会很棒
我正在运行Django 1.4并且PIL 1.1.7在virtualenv管理中pip.每当我通过管理界面上传JPEG文件时,都会收到以下错误:Upload a valid image. The file you uploaded was either not an image or a corrupted image. 
由于很多Ubuntu的用户报告,在安装时,PIL erronously看着/usr/lib/了libjpeg,而其真正的位置是/usr/lib/i386-linux-gnu/.这是照顾; 我按照这些帖子中的答案:
Django ImageField"上传有效图像.您上传的文件不是图像或损坏的图像."
为什么我不能通过admin /?将jpg文件上传到我的Django应用程序?
现在安装的最终输出如下:
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.3 (default, Apr 20 2012, 22:44:07)
              [GCC 4.6.3]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support …我试过这些命令:
pip install libjpeg8-dev
pip install libjpeg-dev
pip install libjpeg-devel
pip install libjpeg
pip install libjpeg62 libjpeg62-dev
但它们都不起作用.pip的正确命令是什么?
我想用命令行中的jpg图像优化整个测试文件夹.我找到了这个,但它不起作用:
cd /home/site/html/update/test/
find . -exec jpegtran -optimize "{}" "{}.opti.jpg" "{}" \;
我想覆盖现有的图像.
建议?
回答:
find /img/path -name "*.jpg" -type f -exec jpegtran -copy none -optimize -outfile {} {} \; 
我正在尝试用 C++ 读取 jpg 图像。我按照此链接https://www.opengl.org/wiki/Image_Libraries的建议下载了libjpg并安装了它。尽管当我包含库时,Xcode 构建失败,提示“jpeglib.h”文件未找到
#include <jpeglib.h>
我可以在 /usr/local/include/ 目录中看到标头,所以我不明白为什么 Xcode 看不到它。
操作系统和软件详细信息:
OSX 10.11(埃尔卡皮坦)
Xcode 7.0.1
编辑:
find /usr/local -name \*jpeg\* -print -name \*jpg\* -print
/usr/local/bin/cjpeg
/usr/local/bin/djpeg
/usr/local/bin/jpegtran
/usr/local/Cellar/jpeg
/usr/local/Cellar/jpeg/8d/bin/cjpeg
/usr/local/Cellar/jpeg/8d/bin/djpeg
/usr/local/Cellar/jpeg/8d/bin/jpegtran
/usr/local/Cellar/jpeg/8d/include/jpeglib.h
/usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib
/usr/local/Cellar/jpeg/8d/lib/libjpeg.a
/usr/local/Cellar/jpeg/8d/lib/libjpeg.dylib
/usr/local/Cellar/jpeg/8d/share/man/man1/cjpeg.1
/usr/local/Cellar/jpeg/8d/share/man/man1/djpeg.1
/usr/local/Cellar/jpeg/8d/share/man/man1/jpegtran.1
/usr/local/include/jpeglib.h
/usr/local/lib/libjpeg.8.dylib
/usr/local/lib/libjpeg.a
/usr/local/lib/libjpeg.dylib
/usr/local/Library/Aliases/libjpeg
/usr/local/Library/Aliases/libjpeg-turbo
/usr/local/Library/Formula/jpeg-archive.rb
/usr/local/Library/Formula/jpeg-turbo.rb
/usr/local/Library/Formula/jpeg.rb
/usr/local/Library/Formula/jpeginfo.rb
/usr/local/Library/Formula/jpegoptim.rb
/usr/local/Library/Formula/jpegrescan.rb
/usr/local/Library/Formula/mjpegtools.rb
/usr/local/Library/Formula/mozjpeg.rb
/usr/local/Library/Formula/openjpeg.rb
/usr/local/Library/Formula/recoverjpeg.rb
/usr/local/Library/LinkedKegs/jpeg
/usr/local/opt/jpeg
/usr/local/share/man/man1/cjpeg.1
/usr/local/share/man/man1/djpeg.1
/usr/local/share/man/man1/jpegtran.1
/usr/local/src/jpeg-9a
/usr/local/src/jpeg-9a/.deps/cdjpeg.Po
/usr/local/src/jpeg-9a/.deps/cjpeg.Po
/usr/local/src/jpeg-9a/.deps/djpeg.Po
/usr/local/src/jpeg-9a/.deps/jpegtran.Po
/usr/local/src/jpeg-9a/.libs/cjpeg
/usr/local/src/jpeg-9a/.libs/djpeg
/usr/local/src/jpeg-9a/.libs/jpegtran
/usr/local/src/jpeg-9a/.libs/libjpeg.9.dylib
/usr/local/src/jpeg-9a/.libs/libjpeg.a
/usr/local/src/jpeg-9a/.libs/libjpeg.dylib
/usr/local/src/jpeg-9a/.libs/libjpeg.la
/usr/local/src/jpeg-9a/.libs/libjpeg.lai
/usr/local/src/jpeg-9a/cdjpeg.c
/usr/local/src/jpeg-9a/cdjpeg.h …每当我尝试在JavaFX中创建一个Image时,我都会收到此错误.绝对没有加载图像,但UI上的其他内容都是.我唯一一次看到这个时候prism.verbose=true
StackOverflow上类似问题的其他答案建议重新安装libjpeg.但是,当我这样做时sudo apt-get remove libjpeg8,它会尝试删除看似非常重要的4 GB的软件包.
有没有其他人经历过这个并找到了一个可行的解决方案,不需要我重新安装我的整个操作系统?
这是整个堆栈跟踪:
java.io.IOException: Wrong JPEG library version: library is 80, caller expects 70
at com.sun.javafx.iio.jpeg.JPEGImageLoader.initDecompressor(Native Method)
at com.sun.javafx.iio.jpeg.JPEGImageLoader.<init>(JPEGImageLoader.java:187)
at com.sun.javafx.iio.jpeg.JPEGImageLoaderFactory.createImageLoader(JPEGImageLoaderFactory.java:49)
at com.sun.javafx.iio.ImageStorage.getLoaderBySignature(ImageStorage.java:419)
at com.sun.javafx.iio.ImageStorage.loadAll(ImageStorage.java:266)
at com.sun.javafx.tk.quantum.PrismImageLoader2.loadAll(PrismImageLoader2.java:142)
at com.sun.javafx.tk.quantum.PrismImageLoader2.<init>(PrismImageLoader2.java:77)
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.processStream(PrismImageLoader2.java:252)
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.processStream(PrismImageLoader2.java:225)
at com.sun.javafx.runtime.async.AbstractRemoteResource.call(AbstractRemoteResource.java:109)
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.access$201(PrismImageLoader2.java:225)
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.lambda$call$428(PrismImageLoader2.java:259)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.call(PrismImageLoader2.java:258)
at com.sun.javafx.tk.quantum.PrismImageLoader2$AsyncImageLoader.call(PrismImageLoader2.java:225)
at com.sun.javafx.runtime.async.AbstractAsyncOperation.lambda$new$272(AbstractAsyncOperation.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
这是我的java版本信息.我正在使用Oracle版本.
java version "1.8.0_72"
Java(TM) SE Runtime Environment (build 1.8.0_72-b15)
Java HotSpot(TM) 64-Bit Server VM (build …在编译libjpeg然后使用它时,我偶然发现了这个问题:
JPEG parameter struct mismatch: library thinks size is 512, caller expects 492
之后程序停止。这种情况特别是在结构struct jpeg_decompress_struct和上发生的struct jpeg_compress_struct。如果取消了对这些结构的检查,则程序将崩溃,并出现空指针异常,并且结构成员包含垃圾。
从版本6b的预编译二进制文件,或者从版本9a的预编译二进制文件,到版本9a的编译错误都会发生此错误;在Windows(32位)上使用MinGW,MSYS 1.0进行编译。在配置文件中乱七八糟没有帮助;该数字492可以更改,但决不能等于512,以使程序正常运行。
libjpeg编译确实创建了一个有效的cjpeg.exe和djpeg.exe。
有任何想法吗?
这是我的泊坞窗文件:
FROM php:8.0-fpm-buster
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Install system dependencies
RUN apt-get update && apt-get install -y \
    build-essential \
    git \
    curl \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    jpegoptim optipng pngquant gifsicle \
    libonig-dev \
    libxml2-dev \
    zip \
    sudo \
    unzip \
    npm \
    nodejs \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP …