c - 我可以将使用 libjpeg 的 jpeg 解压的输出设置为一定的宽度和高度吗?
问题描述
我想解码一个 jpeg 图像,我正在使用 libjpeg 这样做。流程为:Input image -> Option 1.Resize+decode, Option 2.decode+resize->output
在上述流程中,我应该选择什么?
我可以将输出的解压缩图像调整为特定的宽度和高度,例如 416x416?
旁注:在浏览文档时,我遇到了参数 output_width 和 output_height,我可以修改这些吗?我所指的文档:DOC Lines : 631-641
解决方案
是的,您可以在解压缩图像时缩放图像,但只能通过其实际尺寸的倍数(或子倍数)。
无论如何它可能很有用,我就是这样使用它的。我想生成更大图片的缩影(拇指),所以我选择了可用的最小尺寸;输出更小,内存更少,要处理的像素更少以调整大小,并且根据情况甚至解码步骤可以更快。
我手头没有这些资源,但我可以在今晚搜索以提供更多详细信息。
-- 更新 -- 我在我的旧资源(pascal)中发现了以下内容:
cinfo.scale_num := 1;
cinfo.scale_denom := 1; { 1:1 scaling }
...
cinfo.two_pass_quantize := TRUE;
{ Step 5: Start decompressor }
jpeg_start_decompress(@cinfo);
如您所见,解压缩时应用了缩放工具;据我所知,它在要求原始图像的 1/2、1/4、1/8 等时效果很好。
在另一个程序中,我发现:
sc := round(width/IconRect.right/(fmOptions.cbThumbQuality.ItemIndex+1));
if sc>ord(jsEighth) then sc := ord(jsEighth);
scale := TJpegScale(sc);
上面的代码片段计算了将原始图像缩小多少以获得“图标”(或微型)宽度,但将缩放限制为 1/8:我记得,但我不确定,这个限制来自 jpeg 库. 另一方面,jpeg 库已经发展,也许它现在具有更多功能。
因此,总而言之,您可以设置缩放模式,但不能设置最终尺寸;设置比例后,output_width将反映最终宽度,无论如何这是为库的解压缩例程分配内存所必需的。
希望能帮助到你。
推荐阅读
- c# - 比较不同类型的装箱值
- c++ - 智能指针(唯一指针)和引用
- visual-studio - 如何在 Visual Studio 中启用热插拔
- testing - 使用 Cucumberish 在 XCUITest 设置中重置应用程序
- python - 无法更改从 nodeJS 到 Python 的 spawn 发送的整数
- java - 在 ExtentReport 中打印屏幕截图
- c++ - 如何使用带有 Qt 和 C++ 的“接口类”来通信两个线程
- reactjs - 动态添加/删除输入 ReactJS
- sql - SQL 检索“日历”表
- c# - 异步并行循环返回任务之外太快,除非我在循环中检查完整的布尔值