问题标签 [libjpeg-turbo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 需要适用于 VS2013 x64 的 jpeglib-turbo 示例
我正在尝试学习如何使用 jpeg-turbo 库。我有一个魔鬼的时间开始。doc 文件夹中的 example.c 示例,以及我在网上找到的每个示例,当我尝试读取 .jpg 文件时在 VS2013 中崩溃。他们编译得很好。但是当我运行它们时,它们会因访问冲突错误而崩溃。
我真正需要的是一个可以在 VS2013 x64 中正常运行的小型工作(对初学者友好)示例。包括 main(){} 代码块代码。如果我可能需要设置的 VS 项目属性中有什么特别的东西可能会导致崩溃。
我正在努力让一个简单的例子工作。
谢谢您的帮助。
*编辑——这是一个非常小的例子。我也尝试让 jpeglib 在使用和不使用 Boost/GIL 的情况下运行,但加载图像时它总是崩溃:异常在 0x00000000774AE4B4 (ntdll.dll)
jpeg - jpegoptim vs jpegtran vs mozjpeg
我在这件事上发现了两篇略有冲突的博客文章,在这里我总结一下:
- jpegoptim 和 jpegtran 执行相同并产生相同的结果,而 mozjpeg 需要两倍的时间才能节省非常小的文件大小
- 与 jpegtran 相比,mozjpeg 需要大约 1.7* 的计算时间,并在文件大小节省方面产生大致成比例的好处
更令人困惑的是,这个 Reddit 线程表明 mozjpeg 使用 jpegcrush 中使用的相同算法,并且 jpegcrush 是 jpegtran 的包装器......所以我们绕了一圈?我只能假设那些 Reddit 评论是错误的,有人可以确认吗?
pillow - jpegtran 与 libjpeg-turbo、jpegoptim 和 mozjpeg 有什么关系?
据我了解,jpegtran 包含在 libjpeg-turbo 中,并且在使用optimize=True
. jpegoptim 使用与 jpegtran 相同的算法,但需要将图像临时保存到磁盘才能对其进行优化,并且 jpegoptim 具有额外的有损压缩能力。
查看 Github 上的 mozjpeg 存储库,有很多对 libjpeg-turbo 的引用,而且它有更多的星星,所以我的问题是它们之间有什么关系?mozjpeg 是 libjpeg-turbo 的一个分支,它可以做任何事情甚至更多吗?即,是否可以禁用 mozjpeg 中的某些功能并最终获得与 libjpeg-turbo 相同的性能和结果?
c - libjpeg turbo tjCompressFromYUV
我想在 C 中使用 libturbojpeg 将平面 4:2:0 YUV 缓冲区压缩为 jpeg 图像,但我在使用该tjCompressFromYUV()
函数时遇到了问题。
这是我的代码:
返回的错误字符串tjGetErrorStr()
是“Bogus input colorspace”。
我尝试链接 libturbojpeg 版本 1.4.2 和 1.4.90。
任何帮助将不胜感激,
谢谢
jpeg - libjpeg-turbo的压缩速度和我程序中的libjpeg没有区别
我的程序在android设备上运行,设备是支持NEON的ARM系统。
起初我使用 libjpeg 将 RGB 图像(800*480)压缩为 jpeg。每张图像的速度约为 70 毫秒,但对我来说太慢了。后来我找到了libjpeg-turbo,似乎它可以提高ARM中的NEON的压缩速度。
但是经过编译和测试,我发现它们的压缩速度几乎一样。并且传递给 tjCompress2 的质量和标志的更改也没有生效。我不知道我的程序中是否有问题或缺少某些东西。下面的代码:
jpeg buffer(out) 由我自己分配和释放。
我使用的 libjpeg-turbo 版本是 1.4.2
c - libjpeg 中的 JCS_RGB 和 JCS_EXT_RGB 有什么区别?
JCS_EXT_RGB 与 JCS_RGB 有何不同,我应该何时使用它们?
image - 如何正确打开/解码超过 65500 * 65500 像素的 jpeg 图像?
我正在尝试从 Hamamatsu NanoZoomer 幻灯片扫描仪生成的文件中提取图像内容。NDPI 文件使用修改后的 TIFF 结构,并将图像内容以 JPEG 格式存储在一大块中。使用 StripOffsets 和 StripByteCounts,我能够提取应该是 JPEG 文件的数据。
数据流具有 JPEG 文件的所有正确签名,例如 FFD8(扫描开始标记)和 FFD9(扫描结束标记)。如果这是一个小于 65500*65500 像素的图像,那么如果我将数据流保存到 jpeg 文件中,我可以很好地打开文件。
在 JFIF 头中,FFC0 标记之后的第三个和第四个字节表示图像高度;之后的两个字节代表图像宽度。但是对于大于 65500*65500 像素(实际上是 122880*78848 像素)的图像,这四个字节据说代表图像高度和图像宽度都是零。在此之后(第 255-263 行),我将它们更改为255、220、255、220。当我通过在 Windows 中右键单击它并选择详细信息来检查 jpeg 信息时,我确实看到 Windows Photo Viewer 将分辨率读取为 65500*65500,尽管它们并不代表真正的像素分辨率。问题是,当我试图打开图像时,它显然是以错误的方式解码的。
所以我的问题是:如何正确打开这样的 jpeg 文件?或者说,我怎样才能正确地将这些图像内容的全部解码到内存中?
我现在正在尝试使用 MATLAB 了解文件结构。最终,我将使用 Python + OpenCV(或在必要时使用 Python + Cython + libjpeg-turbo)将整个图像读入内存。
python - 如何在 OSX 上安装 libjpeg?
libjpeg 或 libjpeg-turbo 是安装Pillow的要求,这是在 django 上存储图像的新要求。jpeg
所以我需要安装 Pillow,但在我通过名为 libjpeg 或 libjpeg-turbo 的软件包获得支持之前,它不会起作用。我希望至少是这样。
这种依赖在开发服务器上不是问题,但我需要在本地做一些工作(Macbook Pro OSX 10.11.5)。还没有能够做到这一点或找到一个解决方案来安装 OSX。我希望我能在里面找到一些东西,pip
但是conda
OSX 什么都没有。我已经看到有各种在 Linux 上安装的常规方法。
c - 使用返回“空输入文件”的 libjpegturbo 解压缩 jpeg
正如标题所述,我正在尝试使用 libjpeg-turbo 读取 JPEG 文件。我在家里的 Mac 上尝试了这段代码,它可以工作,但现在我在 Windows 上,它Empty input file
在调用时给了我一个错误jpeg_read_header
。我已经通过执行 fseek/ftell 验证了文件不是空的,并且我得到的大小与我期望的大小相对应。
我最初的想法是我可能没有以二进制模式打开文件,所以我也尝试使用 _setmode,但这似乎没有帮助。这是我的代码供参考。
任何帮助深表感谢!
c - 来自 libjpeg-turbo-1.5.1-vc.exe 的 TurboJPEG API 产生错误的输出
我在 Visual Studio 2015 中用 C 语言编写了一个测试程序,用于测试 libjpeg-turbo TurboJPEG-API。
在这个测试程序中,我生成一个 800x800 RGB 像素的图像并将其写入磁盘。当我使用TJSAMP_GRAY
该tjCompress2
功能时,磁盘上生成的图像看起来不错:
当我改用图像时TJSAMP_444
,图像看起来很奇怪:
但是,这两个图像都无法在 Adobe Photoshop 中打开,而是在 MS-Paint、Chrome 或 Internet Explorer 中打开。TJSAMP_GRAY
除了产生奇怪的图像之外的所有其他选项,质量设置为 100TJSAMP_GRAY
会产生奇怪的输出。(这篇文章中的图像是通过屏幕截图复制的,并保存为 png 以用于较小的数据。)turbojpeg.dll
我还通过 P-Invoke使用该库编写了一个 C#-Program 。该程序正在产生有效的输出。
问:我的错在哪里?
有问题的源代码:
为了完整起见,测试 C# 源代码可以正常工作: