问题标签 [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 回答
651 浏览

c - JPEG源代码及量化模式变化——C语言

我被分配做一个项目,该项目包括将 JPEG 源代码中的量化从量化表更改为 Lloyd-Max 量化。问题是不知道该做什么(我知道如何更改量化),而是在哪里可以找到我应该更改的代码。如果有人熟悉libjpeg-turbo,你能给我一些建议吗?

0 投票
1 回答
1762 浏览

jpeg - 为 mac (macports) 安装 libjpeg 的问题

我使用的是 macbook(带有 Yosemite)。我对macports很陌生。

但是,我需要安装 libjpeg(所以我可以完全使用 torch7),但是当我尝试时得到这个错误:

结果:

我不知道该怎么办?因为我不认为我可以毫无问题地卸载 jpeg

0 投票
1 回答
125 浏览

jpeg - 技术 - 扫描 Libjpeg 中的文件

请解释一下,libjpeg中的技术-scans文件如何

0 投票
1 回答
1934 浏览

c++ - libjpeg/libjpeg-turbo RGBA/32位int解压

当使用 libjpeg 将图像输入 OpenCL 时,为了能够将通道视为标准化的 uint8 CL_UNORM_INT8(浮点数在 range 内[0.0, 1.0]),您只能将其输入具有 4 个通道分量的缓冲区。这是有问题的,因为 libjpeg 只输出 3(默认情况下按 RGB 顺序),因为 JPEG 没有不透明度的概念。

我看到的唯一解决方法是使用 libjpeg 扫描线,然后制作适当长度的重复缓冲区(为扫描线中的每个像素添加第四个通道分量),然后memcpy将值设置为每个值,将 alpha 分量设置255为每个。如果您很棘手,您甚至可以在原地执行此操作并将缓冲区初始化为row_stride * 4初始状态,然后从 index 向后移动row_stride * 3 - 10,将组件移动到完整缓冲区中的适当位置(并255在必要时添加 alpha)。

但是,这感觉很麻烦,如果您正在处理大图像(我是),那么让这个额外的传递(将汇总)整个图像是不可接受的。

那么,有没有办法让 libjpeg 将组件的数量扩展到 4 个?我尝试过设置属性cinfooutput_components但无济于事。我读过唯一的解决方法是编译一个特殊版本的 libjpeg 并设置常量RGB_COMPONENTS = 4in jmorecfg.h,但这肯定感觉不便携,或者对于这种(常见)输出更改而言是必要的。

0 投票
1 回答
484 浏览

android - 如何在 OS X 上为 Android 编译 libjpeg-turbo?

我正在尝试在 OS X 上为 Android 构建 libjpeg-turbo。这是我正在使用的脚本:

这是输出:

可能是什么原因造成的?我错过了什么?

0 投票
0 回答
505 浏览

libjpeg - 传递 jpeg_write_scanlines 手动行

我在使用 libjpeg-turbo 时遇到了一些奇怪的问题,特别是我有一个 1920x1080 rgba 缓冲区,我正在通过 mmap 读取它(所以它是只读的),我试图将其编码为 jpeg,但我只想对左上角进行编码,例如 320x568 像素(以及其他一些尺寸)。memcpying 那些我试图避免的像素会产生一些开销,所以我试图将 cinfo 中的宽度和高度设置为 320x568,然后仅手动传递给 jpeg_write_scanlines 适当的行。

这是一张显示我的意思的图片:http: //i.imgur.com/lKwkjZS.png

我希望它会占用我从 1920x1080 缓冲区传递的仅有的 568 行中的每一行的前 320 个像素。

所以我将 jpeg 压缩设置为 320x568 并将其传递给 1920x1080 缓冲区,然后专门告诉它每行跳过指针 1920x4bpp。

虽然它只工作了一半,但我得到的图像在前约 94 行左右看起来是正确的,然后其余的都是垃圾。有谁知道为什么这不起作用?

0 投票
3 回答
644 浏览

c++ - 如何释放由 libjpeg 创建的缓冲区?

我正在使用 libjpeg 从 OpenCV Mat 转换图像缓冲区并将其写入内存位置

这是代码:

问题是我无法在任何地方释放出缓冲区。

这就是我使用该功能的方式:

free(_buf) 和 free(*_buf) 都失败了,看来我正试图通过这样做来释放堆头。

并且 mat2jpeg 不接受指向 outbuffer 指针的指针。任何想法?

0 投票
1 回答
2326 浏览

java - libjpeg turbo android jpeg 压缩

我从这里使用 libjpeg-turbo使用 JPEG 压缩来压缩图像,因为

Bitmap.compress(Bitmap.CompressFormat.JPEG, quality, ByteArrayOutputStream);

导致我的 Android 项目中的大图像出现 OOM。

以前我从这里使用 libjpeg-turbo,这给我带来了很多麻烦,所以我通过 sorccu 转移到上面的 Github(我相信这是最新的或运行良好的库)。

Android Studio - 1.4 RC1 Android Ndk - r10e Android SDK min = 14,编译 = 22

同样使用本杰明代码,我尝试使用旧的 Gradle 1.3.0,这导致了很多错误,经过几周的尝试,我更改为gradle-experimental:0.2.0,一切都编译好。

由于我觉得 sorccu Github 易于集成和使用,所以转向它。然后使用库中的 turbojpeg-jni.c 以及用于集成到 android 中的 java 代码(两者都在库中可用)。

我能够使用 ndk-build 进行集成和编译以构建 .so 文件并复制到 lib 文件夹,并且能够在 java 代码中使用它。

gradle 中的模块名称 = jpegturbo android.mk 中的模块名称 = jpegturbo

将其构建为共享库

java中的库加载代码 = System.loadLibrary("jpegturbo"); (org.libjpegturbo.turbojpeg.TJLoader.java)

我现在遇到的问题很少,请帮助我解决它,

1.主要问题我无法使用它压缩图像,压缩图像损坏可能是我做错了,下面是java代码

可能是上面块中的方法或逻辑可能是错误的,帮帮我!!!

  1. 我没有从 github 更改 application.mk,

APP_ABI := armeabi armeabi-v7a armeabi-v7a-hard arm64-v8a x86 x86_64

我使用下面的命令来构建 .so 文件

ndk 构建 NDK_PROJECT_PATH=。APP_BUILD_SCRIPT=./Android.mk APP_ABI=armeabi-v7a LOCAL_ARM_NEON=true ARCH_ARM_HAVE_NEON=true

它单独为 ABI armeabi-v7a 生成 .so 文件,我为其他 ABI 手动复制 .so 文件。我什至尝试了以下命令,但没有帮助

ndk 构建 NDK_PROJECT_PATH=。APP_BUILD_SCRIPT=./Android.mk APP_ABI=全部

ndk 构建 NDK_PROJECT_PATH=。APP_BUILD_SCRIPT=./Android.mk

最终的 apk 也适用于我的手机 Sony Xperia U ST25i,但在模拟器中却没有,它说找不到 .so 文件,我没有检查其他设备

注意:-我可能对库作者有误,但提到的两个库创建者都做得很好

我还提到了以下链接,

  1. 链接 1
  2. 链接 2
  3. 链接 3

更新 解决了问题 2,通过将 Application.mk 更改为 APP_ABI := armeabi-v7a armeabi-v7a-hard x86 x86_64 arm64-v8a APP_PLATFORM := android-14

这是我的 ndk-build 命令 ndk-build NDK_PROJECT_PATH=。APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk

在这个应用程序在模拟器中也可以正常工作之后

0 投票
1 回答
121 浏览

huffman-code - 为什么libjpeg的霍夫曼解码中“不允许所有代码为全”?

我试图让自己满意,我从他们的 FTP 服务器获取的 METEOSAT 图像实际上是有效的图像。我的疑问出现了,因为到目前为止我使用的所有工具都抱怨“假霍夫曼表定义” - 但是当我简单地注释掉该错误消息时,图像看起来很合理(地球圆盘的灰度部分)。

来自https://github.com/libjpeg-turbo/libjpeg-turbo/blob/jpeg-8d/jdhuff.c#L379

如果我简单地注释掉检查,或者添加一个huffsize[p]非零检查(如在包含循环的控制表达式中),然后djpeg设法将图像转换为 BMP,我可以轻松查看它。

为什么评论声称不允许使用全一代码?

0 投票
0 回答
666 浏览

android - NDK libjpeg-turbo 共享库构建失败,使用 armeabi

我使用 sorccu 的 Github 代码来构建共享库,只需将 .mk 文件的最后一行编辑为“include $(BUILD_SHARED_LIBRARY)”。 https://github.com/openstf/android-libjpeg-turbo 但它失败了:

我的ndk-build版本是r10e,我用的是eclipse 4.5.1 MARS,win7。另一个平台: armeabi-v7a armeabi-v7a-hard arm64-v8a x86 x86_64,构建良好,没有错误。

我已经阅读了 sorccu github 的问题。这不是我的问题。https://github.com/openstf/android-libjpeg-turbo/issues/1 我的目标是构建armabi的libjpeg-turbo的共享库。

有人可以帮助我吗?