转移一个有符号的负值是未定义的
我正在出演原始JPEG标准(用于参考SLL术语表示:shift left logical operation(请参阅PDF的第15页) 现在,著名的libjpeg实施决定实施/* * Figure F.12: extend sign bit. * On some machines, a shift and add will be faster than a table lookup. */ #ifdef AVOID_TABLES #define HUFF_EXTEND(x,s) ((x)
0 2024-04-10
编程技术问答社区
在运行时找出libjpeg的版本(或其他防止中止的方法)?
我的应用程序使用libjpeg读取/编写JPEG图像.一切都很好 最近,我的应用程序试图用错误编写jpeg映像时开始崩溃.侧而不是segfault) 一些调查表明,确实对我的应用程序进行了针对libjpeg-62标头(安装在/usr/local/include中),然后使用libjpeg-80的dylibs(安装在/usr/lib/i386中) -linux-gnu/) . 删除libjpeg-62标头并使用libjpeg-80标头解决问题. 但是,即使某些最终用户安装了与我的应用程序安装不同的库版本,我也将不胜感激的解决方案. 1)如果我能以某种方式说服libjpeg即使在致命错误上也不会流产,那就太好了; 例如类似: jpeg_abort_on_error(0); 2)或不放弃检查是否已安装正确的库: if(!jpeg_check_libraryversion()) return; 3)如果这是不可用的,我可以手动检查在运行时检测到的
0 2024-04-09
编程技术问答社区
用libjpeg写一个jpeg(seg fault)。
尝试使用libjpeg从某些原始数据编写JPEG文件. 它触发jpeg_start_compress() 中的分割故障 这是代码的相关部分: void write_sub_image(char *filename, int start, int end) { struct jpeg_compress_struct cinfo; unsigned char *stride; JSAMPROW row_pointer[1]; unsigned long new_width = end-start; int i; FILE *fp; stride = (unsigned char *)malloc( new_width * 3); fp = fopen(filename, "w+"); jpeg_create_compress(&cinfo); jpeg_stdio_dest(&cinfo,
0 2024-04-08
编程技术问答社区
使用libexif将exif数据写入jpg中
我正在尝试使用libexif将EXIF数据写入JPEG文件.我几乎遵循提供的示例.我可以理解所有正在编写的EXIF数据块以及所有内容,但是如何按照他们的建议加载JPEG数据? (使用libjpeg).我找不到可以直接让我将JPEG导入char的功能.如果我在下面如下所示,我的代码可以很好地工作. . /* * write-exif.c * * Placed into the public domain by Daniel Fandrich * * Create a new EXIF data block and write it into a JPEG image file. * * The JPEG image data used in this example is fixed and is guaranteed not * to contain an EXIF tag block already, so it is easy to precompute wher
0 2024-04-08
编程技术问答社区
在C语言回调中抛出一个异常,可能会跨越动态库的边界......这安全吗?
我正在使用 libjpeg 现在就保存JPEG图像.如果存在错误,则libjpeg的默认行为是调用exit(),我想避免,因为这不是我程序的致命错误. libjpeg setjmp.h 以满足此要求,而不是exit()该计划. 但是,我正在编写C ++程序,并且可以访问异常. 这个问题的答案说明它是安全的(如 - 定义的行为)从回调中引发例外.但这并没有提及动态库,并且有一个一般的经验法则,您不会在动态库边界上引发例外. 这是一个示例: #include #include #include #include static void handleLibJpegFatalError(j_common_ptr cinfo) { (*cinfo->err->output_message)(cinfo); throw std::runtime_error("error in libj
0 2024-04-08
编程技术问答社区
libjpeg输出缩放
libjpeg是否允许/有例行程序来扩展输出图像? 我有一个图像,在保存到和加载时需要调整大小,提供width1,height1在输入上并获取width2,height2,输出上的高度2,我真的不能使用外面的任何东西. 解决方案 是的,libjpeg确实支持图像缩放,但有一些局限性. libjpeg版本8C及更高版本支持 m/8缩放其中m是1到16.更常用的libjpeg版本6B仅支持1、2、4和8的M(即2降尺度). 使用scale_num和scale_denom将缩放分子和分母提供给解压缩对象.请参阅jpeglib.h中的jpeg_decompress_struct.您可以参考DJPEG.C以获取示例. 这比解码整个图像然后缩减更快,质量更高. 其他解决方案 否,您需要自己缩放它(线性插值是最简单和最快的,但给出了方形的像素,双线性/三线性/比科比奇是棘手的,但给出了更平滑的结果),或者使用库将使用一个将会使用的库.为您做肮脏的工作(检查Ope
0 2024-04-07
编程技术问答社区
JPEG参数结构不匹配
aTer编译libjpeg然后使用它,我偶然发现了问题: JPEG parameter struct mismatch: library thinks size is 512, caller expects 492 之后程序停止.这是专门用于结构struct jpeg_decompress_struct和struct jpeg_compress_struct的.如果在这些结构上删除了检查,则程序将以空指针异常崩溃,结构成员包含垃圾. 误差是通过版本6B的预编译二进制文件或预编译版本9a以及编译版本9a发生的;在Windows上使用Mingw,MSYS 1.0编译(32位).在配置文件中弄乱无济于事;数字492可以更改,但永远不要等于512,以便程序运行. libjpeg汇编确实创建了有效的cjpeg.exe和djpeg.exe. 有什么想法? 解决方案 在我的情况下,问题是库和我的程序是用不同的HAVE_BOOLEAN值编译的,因此boolean类型的
2 2024-04-07
编程技术问答社区
用libjpeg写到内存缓冲区而不是文件?
我找到了使用libjpeg写入文件的功能: int write_jpeg_file( char *filename ) { struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; /* this is a pointer to one row of image data */ JSAMPROW row_pointer[1]; FILE *outfile = fopen( filename, "wb" ); if ( !outfile ) { printf("Error opening output jpeg file %s\n!", filename ); return -1; } cinfo.err = jpeg_std_error( &jerr ); jpeg_create_compress(&
0 2024-04-06
编程技术问答社区
使用jpeglib进行JPEG压缩字节流的操作
我的JPEG压缩字节流存储在一个称为" Image"的变量中,我想将此字节流转换为RGB. eg:unsigned char *image; 我的问题是:有什么方法可以将"图像"传递给jpeg_stdio_src()获取RGB颜色值? 谁能告诉我如何使用jpeglib库从字节流"图像"获取RGB? 谢谢 解决方案 尝试这样的事情.这使用对象咖喱来存储结果(在此处没有声明). typedef struct { struct jpeg_source_mgr pub; // public fields JOCTET * buffer; // start of buffer boolean start_of_file; // have we gotten any data yet? } my_source_mgr; typedef my_source_mgr * my_src_ptr; stati
0 2024-03-05
编程技术问答社区
使用Node Js将普通图像转换成渐进式图像
是否有任何方法可以使用nodejs将正常图像转换为渐进式的API.我不想使用base64. 我对此做了很多研发.我发现的一个图书馆,即lib turbo-jpeg 但是在这方面,只有他们正在解码图像.我也想编码该图像. 请检查以下链接以获取参考.如果有人有任何解决方案,请告诉我. 链接是 - > 请帮助我写API以将图像转换为前进. 预先感谢您. 解决方案 您可以使用 gm module 将支持的图像格式转换为渐进的JPEG. 这是一个简单的示例(在MacOS上使用GraphicsMagick V1.3.31和Node.js V10.15.3测试): const fs = require('fs'); const path = require('path'); const https = require('https'); const gm = require('gm'); // https://www.npmjs.com/package/gm co
2 2024-03-01
编程技术问答社区
是否可以控制apache使用哪些库?
好吧,所以我有一个 pil的早期问题仍然尚未解决.其他人遇到了这个问题,并取得了成功,>删除旧的jpeg库.但是,我真的不能在机器上这样做,因为它是Rhel,所以很多事情都取决于Libjpeg和libjpeg-devel(当我尝试Yum yum emove libjpeg时,总共有252个包裹,那本来应该是的删除!) 我在/usr/local/lib中安装了JPEG-8. Python正确使用它,但是Apache不是不是.这是LSOF的列表: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd xxxxx root mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0 python xxxxx jordan
0 2024-02-27
编程技术问答社区
快速解码JPEG图像的方法
我需要解码(分解为位图)很小(约1200 * 1200)JPEG.问题是我需要快速进行.我尝试过libjpeg,这很慢.我还尝试了bitmapfactory.decodebytearray-速度更快,但仍然不够快.还有什么选择? 本机(C ++)库是最优选的. P.S.我的jpeg是直接在内存中创建的. P.P.S.我想知道libjpeg怎么比bitmapfactory.decodebytearray慢. 解决方案 尝试Libjpeg Turbo:
8 2024-02-17
编程技术问答社区
如何构建用于ndk的libjpeg
我下载libjpeg-8d源代码.我想将其编译到可以在Android NDK中使用的libjpeg.so.因为NDK使用ARM Architecture,但我的PC的GCC是X86架构.因此,当我使用GCC来编译libjpeg.so并将其放入JNI文件夹中.它显示使用NDK-build时无法重新注册的文件格式.那么如何构建正确的libjpeg.so for ndk? 解决方案 您可以在这里找到带有Android Makefile的libjpeg 8d: https://github.com/folecr/jpeg8d 另外,请考虑使用git://git.linaro.org/people/tomgall/libjpeg-turbo/libjpeg-turbo.git> 的libjpeg-turbo
2 2024-02-05
编程技术问答社区
在尝试安装libjpeg-devel和elastic beanstalk时出现错误
我正在尝试在AWS Elastic Beanstalk上运行的Django应用程序上进行一些图像,因此我正在尝试安装枕头以完成工作. 如前一些文章所述,我正在添加 packages: yum: libjpeg-devel: '6b' 在我的 .ebextension/myapp.config 的顶部 我的要求包括: Django==1.6.7 boto>=2.32.1 django-filter>=0.7 django-password-reset>=0.7 django-storages>=1.1.8 django-taggit==0.12 djangorestframework>=2.3.13 django-bootstrap3>=4.11.0 django-bootstrap3-datetimepicker>=2.2.3 python-dateutil>=2.2 pytz>=2014.2 six>=1.7.3 wsgiref==0.1.2 yo
"错误:读取图像文件时数据流中断"(OS X上的TrueType字体libjpeg和PIL)。
我正在运行OS X 10.6.7,Python 2.6,并编写一个使用PIL操纵图像并在其上添加一些文本的小型WXPYTHON应用程序. 在尝试与libjpeg和pil一起运行的相当多的配置困境之后,我遵循此站点. 运行python setup.py build_ext -i(从Imaging-1.1.7文件夹内部)我得到: -------------------------------------------------------------------- PIL 1.1.7 SETUP SUMMARY -------------------------------------------------------------------- version 1.1.7 platform darwin 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc.
8 2023-12-15
编程技术问答社区
我如何在C++中操作/旋转JPEG图像?
我想使用编译的libjpeg-9示例. 从一开始就实现这一目标:在Windows中使用libjpeg in Windows for Eclipse 尝试将DO_ROT_180集成并读取/写入一个位置:需要帮助汇编libjpeg /p> 解决方案 do_rot_180 transupp.c in libjpeg中的功能(您知道它是Q具有标签)正在做您想要的. LOCAL(void) do_rot_180 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, jvirt_barray_ptr *src_coef_arrays, jvirt_barray_ptr *dst_coef_arrays) /* 180 degree rotation is equivalent to * 1. Vertical mirroring; * 2. Horizontal mirroring. *
4 2023-12-07
编程技术问答社区
jpeg_read_header libjpeg的替代方案
因此,我在Windows上使用libjpeg遇到了一个问题,这会导致jpeg_read_header()崩溃. 问题是(相当有趣的)在这里描述:我已经决定了第三个选项,该选项不使用JPEG_STDIO_SRC/DEST API.但是,经过大量谷歌搜索,我似乎找不到帖子结尾处提到的"将数据馈送到libjpeg"的其他方法,任何人都可以将我指向正确的位置吗? 解决方案 sompe people 报告解决方法有关在较新的Visual Studio中针对MSVCRT链接的问题.通过google msvcrt.dll" Visual Studio" 找到 其他解决方案 如果我正确理解问题,则是因为Windows中所有各种文件句柄之间的差异.他们并非彼此兼容. 此链接会有所帮助吗?它告诉您如何在它们之间进行转换.然后,您可以为功能提供正确的文件句柄并将其运行. http://www.codeproject.com/kb/files/kb/files/handles.a
12 2023-12-06
编程技术问答社区
如何构建这个项目? (jpeg lib)
编辑:我现在正在使用 http://code.google .com/p/jpeg-compressor/所以我不在乎做这项工作了. 我下载了 http://ijg.org/源代码,我尝试将其构建为DLL文件. 这是我可以建造的,直到我进入死胡同. 我注意到有一些我必须删除的.c文件,但是我不知道是否删除了正确的文件,至少有这些文件jmemmac.c和jmemdos.c我认为我不需要.我不得不删除jmemmac.c,因为我在Windows上编译,但是它给出了更多错误,因此我一直删除这些无用的文件,但是现在我不知道该怎么做. 这是我构建时遇到的所有错误: 1>.\ansi2knr.c(273) : warning C4013: 'exit' undefined; assuming extern returning int 1>.\example.c(116) : warning C4013: 'exit' undefined; assuming extern re
4 2023-12-06
编程技术问答社区
如何建立libjpeg 9b的DLL版本?
我想构建libjpeg 9b的DLL版本.根据文档 ps:我从 http://www.ijg.org.org/files/下载了libjpeg 9b的来源. .这是下载它的官方场所吗?我问,因为.vcxproj(最初是.v10)文件的开始字节似乎无效(C2 8B C2 AF C2 A8),因此Visual Studio无法打开它. 解决方案 在 就像如今几乎所有的软件一样, libjpeg 也托管在 [github]:winlibs/libjpeg -libjpeg -9b .我从两个地方下载了它,进行了比较,只有很少的差异(源代码中的任何一个)弹出.我将在 github 版本上进行解释.不幸的是,此处没有演练,因此我必须在其中一些文件中查看以找出必须做什么.这是一个步骤列表: 1.准备地面 1 st 事物是提取压缩( .zip / .tar.gz )文件内容到一个文件夹中(并且有一个 cmd 控制台在那里打开).该文件夹包含许多文件.我们需要的1 st 是 mak
20 2023-11-24
编程技术问答社区