- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 C 语言中的 libturbojpeg 将平面 4:2:0 YUV 缓冲区压缩为 jpeg 图像,但在使用 tjcompressFromYUV()
函数时遇到问题。
这是我的代码:
#define PADDING 2
tjhandle tjh;
unsigned long buf_size;
unsigned char *jpegBuf = NULL;
unsigned long jpegSize;
int width = 352;
int height = 288;
int quality = 70;
unsigned char *ucp_frame;
int j;
FILE *fp = NULL;
ucp_frame = malloc(width * height * 3 / 2);
if ( NULL == ucp_frame ) {
printf("malloc error ucp_frame\n");
return 0;
}
fp = fopen("planar_352x288.raw", "rb");
if( NULL == fp ) {
printf("fopen error\n");
return 0;
}
j = fread( ucp_frame, 1, width * height * 3 / 2, fp);
if( j != width * height * 3 / 2 ) {
printf("fread error\n");
return 0;
}
fclose(fp);
tjh = tjInitCompress();
if( NULL == tjh ) {
printf("tjInitCompress error '%s'\n", tjGetErrorStr() );
return 0;
}
buf_size = tjBufSizeYUV2( width, PADDING, height, TJSAMP_420);
jpegBuf = tjAlloc(buf_size);
if( tjCompressFromYUV( tjh, ucp_frame, width, PADDING, height,
TJSAMP_420, &jpegBuf, &jpegSize, quality,
TJFLAG_NOREALLOC ) ) {
printf("tjCompressFromYUV error '%s'\n", tjGetErrorStr() );
}
tjGetErrorStr()
返回的错误字符串是“Bogus input colorspace”。
我尝试链接 libturbojpeg 版本 1.4.2 和 1.4.90。
任何帮助将不胜感激,
谢谢
最佳答案
Turbojpeg API tjCompressFromYUV 允许您对 jpegBuf 进行以下选项:
@param jpegBuf 指向将接收图像缓冲区的指针的地址JPEG 图像。 TurboJPEG 能够重新分配 JPEG 缓冲区适应 JPEG 图像的大小。因此,您可以选择:
使用 #tjAlloc() 预分配任意大小的 JPEG 缓冲区并让 TurboJPEG 根据需要增加缓冲区,
将 *jpegBuf 设置为 NULL 以告诉 TurboJPEG 分配缓冲区为您服务,或者
将缓冲区预先分配为通过调用确定的“最坏情况”大小tjBufSize()。这应该确保缓冲区永远不必重新分配(设置#TJFLAG_NOREALLOC 可以保证这一点。)
如果您选择选项 1,*jpegSize 应设置为您的文件大小预先分配的缓冲区。无论如何,除非您设置了#TJFLAG_NOREALLOC,您应该始终在从此函数返回时检查 *jpegBuf,如它可能已经改变了。
因此,通过使用第二个选项,无需调用 tjBufSizeYUV2 和 tjAlloc,只需在调用 tjcompressFromYUV 之前设置 jpegBuf=NULL 并在压缩后执行 tjFree 即可。
关于c - libjpeg Turbo tjCompressFromYUV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36176222/
我的目的是使用 libjpeg-turbo (参见 http://www.libjpeg-turbo.org/Main/HomePage )作为独立 Jpeg Group ( http://www.i
当使用 libjpeg 将图像输入 OpenCL 时,为了能够将 channel 视为具有 CL_UNORM_INT8(在 [0.0, 1.0] 范围内 float )的规范化 uint8,您只能用
在我的 C 程序中,我想使用 libexif 和 libjpeg 在给定路径 inputFilePath,并将生成的 jpeg 保存到输出路径 outputFilePath。 输入的 jpeg 文件很
如标题所示,我使用 AWS EC2 和 AWS linux AMI 来设置运行神经式算法的环境。 Nerual-style 我已经成功安装了 torch、Lua、Loadcaffe、Google Pr
如果可能的话,我想使用 libjpeg 从 JPEG 图像的中间读取一行而不读取前面的所有行。这能做到吗? 最佳答案 答案几乎肯定是“是的,你可以,但它需要比你想要的更多的努力”。 JPEG 图像是标
我想使用 libjpeg 库将图像保存到内存( vector )中。我发现那里有功能: init_destination empty_output_buffer term_destination 我的
我正在使用 libjpeg 解码 jpeg 文件。在解码大图像时,用户可能会切换到另一个 jpeg 文件,那么 libjpeg 是否支持解码中断?非常感谢! 最佳答案 Libjpeg 有一个 I/O
我大部分时间都在使用该示例,它确实创建了一个只是乱码的图像: unsigned char* readJpeg(JNIEnv* env, libraw_processed_image_t *raw) {
我使用来自 Independent JPEG Group 的 jpeg 库 v8d我想改变 jpeg 解压缩读取和处理数据的方式。 在 djpeg main() 中,在每个 jpeg_read_sca
来自 jmorecfg.h : #define PACK_TWO_PIXELS(l,r) ((r>16; \ } while(0) #define WRITE_TWO_ALIGNED
我无法理解我从以下代码中得到的段错误: #include #include #include int main(int argc, char** argv){ FILE*
我正在尝试使用 ijg 的 libjpeg 将 RGB 图像压缩为 JPEG。最后的想法是使用图像传感器拍摄图像并将数据压缩为 ARM Cortex M3 Controller 上的 JPEG;但是,
所以我一直在阅读 libjpeg 文档,它非常乏善可陈。 我一直在尝试弄清楚如何从自定义内存缓冲区而不是文件中读取数据,但我不确定如何测试我的解决方案是否正常工作。 目前我从内存中加载 jpeg 的函
我有下一个基于 libjpeg 的 JPEG 图像解压缩标准代码。 jpeg_decompress_struct cinfo; // ...Set error manager and data sou
我正在尝试使用mingw-w64编译libjpeg(版本8d)。我启动的命令是: MyS.BAT /配置 制作 在第三步,我得到这个错误: $ make D:/Builder/bin/make al
我有这样一个常用的代码: struct jpeg_decompress_struct cinfo; jpeg_create_decompress(&cinfo); jpeg_stdio_src(&ci
我正在尝试使用 libjpeg 将图像从一个文件复制到另一个文件。我尝试使用 jpeg_read_scanlines/jpeg_write_scanlines 来复制图像数据,但据我所知这些函数计算
我已经创建了自己的 DCT 计算。 如何使用 jpeg_write_coefficients 将我的 64 个 DCT 值写入使用 jpeg_write_coefficients 的 JPEG 文件(
libjpeg 是否允许/具有缩放输出图像的例程? 我有一个图像需要在保存和加载时调整大小,在输入上提供 width1、height1 并在输出上获取 width2、height2,我真的不能在外面使
我正在使用 C++ JPEG 库 (libjpeg),我意识到当某些函数失败时会调用 exit() 并关闭应用程序。如何覆盖此行为并防止应用程序因 libjpeg 错误而关闭? 最佳答案 这是 lib
我是一名优秀的程序员,十分优秀!