问题标签 [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.

0 投票
1 回答
2128 浏览

c++ - 如何使用 jpeg_mem_dest 使用 libjpeg-turbo 压缩到内存

我试过遵循另一个答案,但似乎无法做到这一点。我有大约 8MiB 的 RBGX 位图可以使用 libjpeg-turbo 转换为内存中的 jpeg。如果我使用jpeg_stdio_dest,我可以将整个内容写入文件,然后将文件读回,就可以了。然而,尝试使用jpeg_mem_dest一直是个难题。我的设置与 相同jpeg_stdio_dest,但 usingmem似乎只分配了一次 4KiB,然后再也不分配任何空间。

我找不到有关如何使用的进一步说明的文档jpeg_mem_dest,并且确实可以使用某些方向。

0 投票
0 回答
123 浏览

libjpeg - GTMetrix 使用哪种 JPG 优化方法?

我正在使用 jpegoptim 和 cronjob 来优化(即使有损)我的 JPG 格式图像。我使用以下命令

但即便如此,当我使用 GTMetrix 或 Google 的工具进行测试时,它们仍然被标记为“无损可压缩”。

我想知道如何管理?有没有其他方法或建议的库可以用来压缩我的图像而不进行无损压缩?我已经阅读了有关libjpeg-turbo ( http://www.libjpeg-turbo.org/ ) 的信息,但我似乎没有找到在我的图像上执行它的方法。

我感谢任何建议和帮助!

提前致谢!

0 投票
0 回答
710 浏览

linux - 如何在带有 Linux 环境的 odroid 上使用 Neon(SIMP) 构建 libjpeg-turbo

我正在尝试在具有 linux 环境的 odroid 上使用启用了 NEON 的 libjpeg-turbo。

我按照此http://cubieboard.blogspot.in/2013/02/raspbian-opencv-libjpeg-turbo.html帖子中给出的说明进行操作,但没有注意到图像捕获有任何变化。(使用 libjpeg-turbo-1.5。 1)

从这个链接 https://github.com/praveenofpersia/Pandboard-ES/wiki/Building-OpenCV-2.4.x-with-full-hardware-optimization-for-the-Pandaboard-ES我得出的结论是 NEON使用 cflags 显式启用。

因此,我查看了 libjpeg-turbo 中的 BUILDING.md,其中有提供 cflags 以启用 NEON 的指令:

但是这些是针对 ios 而不是针对 linux 的。

那么任何人都可以建议我如何在带有 linux 环境的 odroid 中的 libjpeg-turbo 中包含标志以启用 SIMD(NEON)。

0 投票
1 回答
2335 浏览

android - ndk-build *** 多个目标模式。停止

我正在尝试按照https://github.com/openstf/android-libjpeg-turbo上的说明在 Windows 10 上为 android 编译 libjpeg-turbo 库。

我已经android-ndk-r10e在该项目上按如下方式安装并使用它来armeabi通过命令行编译 libjpeg-turbo:

但是我遇到了以下问题,我不知道如何解决它:

同样的结果是使用r13bNDK 的版本:

编辑:

结果ndk-build.cmd APP_ABI=armeabi DUMP_LOCAL_SRC_FILES

0 投票
0 回答
707 浏览

c - 如果在延迟后调用 tjDecompress2 需要更多时间来执行

以下代码用于测试我系统上 libjpeg-turbo 的性能

它在 for 循环中重复解码 jpeg 图像。在我的系统上, tjDecompress2需要大约5-7 毫秒来解码 1024x768 图像。问题是,如果我 在循环末尾添加一个usleep(50000)命令,则tjDecompress2的执行时间会增加到25-28ms。这种行为的原因是什么以及如何解决。基本上我想以 20 FPS 从 ma USB 相机读取 MJPEG 图像并使用 libjpeg-turbo 对其进行解码,因此添加usleep(5000)的目的是模拟两个连续帧到达之间的时间

0 投票
1 回答
113 浏览

libjpeg-turbo - 旋转图像时使用 jpegtran 的奇怪“边框”

我正在使用jpegtran来旋转我的图像,但它似乎在做一些奇怪的事情。相同的代码/逻辑在我的另一台服务器上工作。这是我做过的一个测试用例:

test.jpg 是原始图像,然后我运行:

测试.jpg:

测试1.jpg

测试2.jpg

test2.jpg(第一次旋转)

测试3.jpg:

test3.jpg(第二次旋转)

如您所见,上面有奇怪的边框(几乎就像图像另一部分的阴影):

在此处输入图像描述

什么会导致这种情况,我该如何解决?

服务器显示:

...服务器显示:

0 投票
1 回答
438 浏览

jpeg - Mozjpeg - 渐进式 jpeg 图像渲染首先显示灰度图像

我正在使用以下命令使用 mozjpeg(cjpeg 实用程序)生成渐进式 JPEG

在渲染此输出图像时,首先显示灰度图像,然后是绿色图像,然后是原始图像。经过大量研究,我发现 DC 系数的拆分是为了减小图像的大小。但是,我需要渲染从模糊到明亮。如何做到这一点?

0 投票
0 回答
1264 浏览

image - 为什么我需要像素格式来使用 libjpeg turbo 解压缩图像

背景故事:现在我正在研究图像编码和解码服务。我会将服务附加到一个传感器(例如相机),以压缩图像,通过网络发送它以在最后使用客户端服务接收它,图像最终被解压缩并使用。对于整个压缩/解压缩的东西,我决定使用 libJPEG Turbo,因为它是我发现的最快的库。

问题:在我看来,JPEG 文件是自我描述的,应该可以用每个工具读取它。但是为什么我还需要使用 libJPEG Turbo 进行压缩和解压缩以及像素格式(GRAY、RGB、BGR、RGBX、...)?如何从压缩的 JPEG(字节数组)中提取/解压缩像素格式?

我的代码 - 压缩(c++):

我的代码——解压(c++):

测试: 我对其进行了测试,唯一重要的是我使用相同的像素格式进行压缩和解压缩。如果我两次使用 TJPF_BGR(或 TJPF_RGB)它可以工作,但如果我使用不同的像素格式进行解压缩,通道会被翻转。

有趣的是,如果我使用 tjDecompress 函数(不是 tjDecompress2),我需要使用 TJ_RGB 进行压缩,并且可以使用 TJ_RGB 或 TJ_BGR 进行解压缩以获得正确的结果……如果我开始使用 TJ_BGR 进行压缩,颜色会在最后翻转。我有什么误解?

0 投票
1 回答
1768 浏览

libjpeg - 使用 libexif 和 libjpeg 在现有 JPEG 上设置 exif 标签

在我的 C 程序中,我想使用libexiflibjpeg在给定路径inputFilePath中存在的现有 jpeg 文件上设置 exif 标签,并将生成的 jpeg 保存到输出路径outputFilePath

输入的 jpeg 文件很大(40000 X 40000 像素),因此将整个图像加载到内存中并不可取,也不需要。

我不关心 Jpeg 中其他现有的 Exif 标签,它们可能会被删除。

我已经阅读并尝试了使用固定 JPEG 的 libexif 提供的示例,但无法弄清楚如何对任何 JPEG 执行相同操作。

顺便说一句,我确实得到了以下代码,它通过加载内存中的 jpeg 来设置 exif 标签。它使用与 libexif 一起提供的 exif 实用程序中提供的 libjpeg 实现。

0 投票
1 回答
14561 浏览

docker - Docker Alpine - 启用 GD JPEG 支持

我在通过 PHP-FPM 的 Alpine 图像获取 GD Jpeg 支持时遇到问题。我已经尝试了所有我能想到的组合来让它发挥作用。下面是我的 Dockerfile 中的一个片段:

当我进入容器并运行php -r 'print_r(gd_info());'时,我得到以下信息:

[JPEG 支持]有一个空值。我尝试替换/usr/lib/为:

  • /usr/
  • /usr/include/

没有成功。问题是当我尝试通过 Composer 安装 Magento 2 时出现错误:

有没有人遇到过这种情况,如果有,您是如何解决的?

谢谢