libjpeg可以从FILE*缓冲区读取JPEG数据.我的数据来自于std::istream.我可以将整个读std::istream入缓冲区以与libjpeg一起使用,但我宁愿直接从libjpeg中读取,std::istream如果可能的话.如何才能做到这一点?
我使用libjpeg(C库)来解压缩JPEG文件.现在我有一个unsigned char数组.如何在JNI中从该数组创建位图?
我在Django中遇到了PIL(Python图像库)的一个主要问题,并且已经跳过很多环节,到目前为止还没能弄清楚问题的根源是什么.
问题基本上分解为无法通过Django管理员中的ImageField上传JPEG图像.但问题并不像安装libjpeg那么简单.
首先,我安装了PIL(通过Buildout)并在安装后意识到我没有安装libjpeg,因为JPEG支持不可用.
没有自己设置服务器,我只是假设它没有安装,我从源代码编译了libjpeg 8.这最终出现在我的/ usr/local/lib /目录中.我清除了我的Buildout文件并重建了所有内容.这次PIL编译时我有JPEG支持.但我去了Django Admin并尝试通过ImageField上传JPEG而没有运气.我收到了"上传有效图片.您上传的文件不是图片或损坏的图片"错误.就像测试一样,我打开了一个Djano shell并执行以下操作:
> import Image
> i = Image.open( "/absolute_path/file.jpg" )
> print i
<JpegImagePlugin.JpegImageFile image mode=RGB size=940x375 at 0x7F908C529BD8>
Run Code Online (Sandbox Code Playgroud)
这样运行没有错误,并显示PIL能够打开JPEG.
在做了一些阅读之后,我遇到了这个帖子: 是否可以控制apache使用哪些库?
看起来PHP也使用libjpeg并在Django之前加载,因此之前加载libjpeg 6.2.这是在使用lsof时显示的:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 2561 www-data mem REG 202,1 146032 639276 /usr/lib/libjpeg.so.62.0.0
Run Code Online (Sandbox Code Playgroud)
所以我的想法是我应该使用libjpeg 6.2.所以我删除了位于/ usr/local/lib目录下的libjpeg .重新阅读PIL安装说明后,我意识到我可能没有PIL需要的libjpeg的dev/header文件.所以我也使用aptitude uninstaller(sudo aptitude remove libjpeg62)卸载了libjpeg .然后为了确保我得到了PIL需要的头文件,我使用aptitude安装了libjpeg:(sudo aptget install libjpeg62-dev).
从这里我清理了我的Buildout目录,然后重新构建Buildout,然后重新安装PIL.我再次获得JPEG支持,现在使用libjpeg62.
所以我去Django Admin进行测试.仍然没有JPEG支持.所以我想测试一般的JPEG支持,看看是否没有处理异常,它会抛出什么样的错误.所以在我的主页视图中,我添加了以下代码来打开JPEG图像:
import Image
i = Image.open( …Run Code Online (Sandbox Code Playgroud) 尝试使用libjpeg从一些原始数据中编写jpeg文件.
它会触发分段错误 jpeg_start_compress()
以下是代码的相关部分:
void write_sub_image(char *filename, int start, int end)
{
struct jpeg_compress_struct cinfo;
unsigned char *stride;
JSAMPROW row_pointer[1];
unsigned long new_width = end-start;
int i;
FILE *fp;
stride = (unsigned char *)malloc( new_width * 3);
fp = fopen(filename, "w+");
jpeg_create_compress(&cinfo);
jpeg_stdio_dest(&cinfo, fp);
cinfo.image_width = new_width;
cinfo.image_height = height;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_start_compress(&cinfo, FALSE);
for (i=0; i<height; i++) {
memcpy (stride, image + (start + i * width) * 3, new_width * 3);
row_pointer[0] = …Run Code Online (Sandbox Code Playgroud) 我在我的Mac上使用本地django的sorl.thumbnail并且一直遇到PIL问题,但今天我终于设法安装了它 - 与libjpeg有些麻烦.
我现在可以上传和使用图像 - 但是我无法使用sorl.thumbnail调整它们的大小.
当我尝试我得到以下错误:
Wrong JPEG library version: library is 80, caller expects 62
Run Code Online (Sandbox Code Playgroud)
有谁知道一个很好的解决方案.
我不知道无论sorl使用什么都需要早期版本的libjpeg或者还有一些幽灵安装的东西仍然留在我的所有尝试用各种方法.
我有 :
有谁知道一种方法?
下面的代码帮助我使用libjpg将OpenGL输出转换为JPEG图像,但生成的图像垂直翻转...
代码工作完美,但最终图像翻转我不知道为什么?!
unsigned char *pdata = new unsigned char[width*height*3];
glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, pdata);
FILE *outfile;
if ((outfile = fopen("sample.jpeg", "wb")) == NULL) {
printf("can't open %s");
exit(1);
}
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
jpeg_stdio_dest(&cinfo, outfile);
cinfo.image_width = width;
cinfo.image_height = height;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
/*set the quality [0..100] */
jpeg_set_quality (&cinfo, 100, true);
jpeg_start_compress(&cinfo, true);
JSAMPROW row_pointer;
int row_stride = width * 3;
while (cinfo.next_scanline < cinfo.image_height) { …Run Code Online (Sandbox Code Playgroud) 我想在CentOS 6服务器上安装jpegoptim.我已经下载并解压缩了包但是当我尝试从jpegoptim-1.3.0目录运行./configure时,我收到一条错误消息:
"找不到libjpeg,或者你的版本太旧了(需要v6或更高版本)."
我已经检查过并且我有libjpeg-turbo安装,它应该取代libjpeg.我无法在网上找到关于这个问题的任何内容.我究竟做错了什么?
谢谢,罗布
我收到一个错误,在两台不同的计算机上读取相同的lena.jpg文件会产生两个不同的校验和.
甚至更奇怪的是,当我运行md5sum lena.jpg时,我在两台机器上获得相同的md5总和,因此文件是相同的.
此外,当我加载png而不是jpeg时,数字似乎匹配.这让我相信Pillow在两台不同的机器上,或者至少是用于读取jpeg文件的库之间存在脱节.
有没有办法检查Pillow正在使用哪个版本的libjpeg(最好是在Python中)?
两台计算机都是Ubuntu,虽然一台是12.04,一台是14.04(我也在Mac上测试了它,并且得到了与14.04盒子相同的值)
我有一个关于 DICOM 标准和 libjpeg 库的问题。在 DICOM 标准中,除其他外,还有传输语法:
JPEG 无损、非分层、一阶预测(过程 14 [选择值 1]):无损 JPEG 图像压缩的默认传输语法
据我所知,这个传输语法对应于 JPEG-1 Lossles 格式。我开始研究 libjpeg 库,发现它不支持 (?) Lossless JPEG,如下所述:DICOM 中的 JPEG Lossless
此外,在 libjpeg 文档中有一部分说:
不支持的ISO 选项包括: * 分层存储 *无损 JPEG * DNL 标记 * 非整数子采样率
但是,在库代码中,压缩参数结构中jpeg_compress_struct有一个字段:
boolean lossless; /* TRUE=lossless encoding, FALSE=lossy */
Run Code Online (Sandbox Code Playgroud)
是什么意思?我真的很困惑。任何人都可以描述该库支持哪些 JPEG 标准?此外,如何设置压缩参数以兼容 DICOM JPEG 无损标准?
我目前正在尝试在 Windows 中编译 cImg 和 libjpeg 的(噩梦)任务。几个小时后,我终于能够构建 libjpeg 并将其包含在构建过程中(cImg 需要 libjpeg 才能与 jpegs 配合使用)。
当我尝试使用 'g++ image.cpp libjpeg.a -lgdi32' 进行编译时,出现以下错误:
'jerror.c:112: undefined reference to `__getreent. The system cannot find the path specified.'
Run Code Online (Sandbox Code Playgroud)
我在谷歌上看过,但似乎没有多少人有同样的问题(而且有答案的人更少)。
我正在使用 mingw-w64 在 Windows 中进行编译。