问题标签 [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 - JPEG源代码及量化模式变化——C语言
我被分配做一个项目,该项目包括将 JPEG 源代码中的量化从量化表更改为 Lloyd-Max 量化。问题是不知道该做什么(我知道如何更改量化),而是在哪里可以找到我应该更改的代码。如果有人熟悉libjpeg-turbo,你能给我一些建议吗?
jpeg - 为 mac (macports) 安装 libjpeg 的问题
我使用的是 macbook(带有 Yosemite)。我对macports很陌生。
但是,我需要安装 libjpeg(所以我可以完全使用 torch7),但是当我尝试时得到这个错误:
结果:
我不知道该怎么办?因为我不认为我可以毫无问题地卸载 jpeg
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 - 1
到0
,将组件移动到完整缓冲区中的适当位置(并255
在必要时添加 alpha)。
但是,这感觉很麻烦,如果您正在处理大图像(我是),那么让这个额外的传递(将汇总)整个图像是不可接受的。
那么,有没有办法让 libjpeg 将组件的数量扩展到 4 个?我尝试过设置属性cinfo
,output_components
但无济于事。我读过唯一的解决方法是编译一个特殊版本的 libjpeg 并设置常量RGB_COMPONENTS = 4
in jmorecfg.h
,但这肯定感觉不便携,或者对于这种(常见)输出更改而言是必要的。
android - 如何在 OS X 上为 Android 编译 libjpeg-turbo?
我正在尝试在 OS X 上为 Android 构建 libjpeg-turbo。这是我正在使用的脚本:
这是输出:
可能是什么原因造成的?我错过了什么?
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 行左右看起来是正确的,然后其余的都是垃圾。有谁知道为什么这不起作用?
c++ - 如何释放由 libjpeg 创建的缓冲区?
我正在使用 libjpeg 从 OpenCV Mat 转换图像缓冲区并将其写入内存位置
这是代码:
问题是我无法在任何地方释放出缓冲区。
这就是我使用该功能的方式:
free(_buf) 和 free(*_buf) 都失败了,看来我正试图通过这样做来释放堆头。
并且 mat2jpeg 不接受指向 outbuffer 指针的指针。任何想法?
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代码
可能是上面块中的方法或逻辑可能是错误的,帮帮我!!!
- 我没有从 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 文件,我没有检查其他设备
注意:-我可能对库作者有误,但提到的两个库创建者都做得很好
我还提到了以下链接,
更新 解决了问题 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
在这个应用程序在模拟器中也可以正常工作之后
huffman-code - 为什么libjpeg的霍夫曼解码中“不允许所有代码为全”?
我试图让自己满意,我从他们的 FTP 服务器获取的 METEOSAT 图像实际上是有效的图像。我的疑问出现了,因为到目前为止我使用的所有工具都抱怨“假霍夫曼表定义” - 但是当我简单地注释掉该错误消息时,图像看起来很合理(地球圆盘的灰度部分)。
来自https://github.com/libjpeg-turbo/libjpeg-turbo/blob/jpeg-8d/jdhuff.c#L379:
如果我简单地注释掉检查,或者添加一个huffsize[p]
非零检查(如在包含循环的控制表达式中),然后djpeg
设法将图像转换为 BMP,我可以轻松查看它。
为什么评论声称不允许使用全一代码?
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的共享库。
有人可以帮助我吗?