- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 libjpeg jpeg_read_scanlines
的方式感到困惑作品。据我了解,它逐行解压缩 JPEG,并创建解压缩的像素缓冲区。
典型的用法是这样的:
jpeg_decompress_struct cinfo;
...
unsigned char* image = new unsigned char[cinfo.image_width * cinfo.image_height];
unsigned char* ptr = image;
int row_stride = cinfo.image_width;
while (cinfo.output_scanline < cinfo.image_height)
{
jpeg_read_scanlines(&cinfo, &ptr, 1);
ptr += row_stride;
}
问题:我对输出缓冲区大小感到困惑。共example code我看到哪个使用了jpeg_read_scanlines
,输出缓冲区的大小是width X height
,其中width和height指的是JPEG文件的尺寸。因此,对于 10x10 JPEG 文件,我们有一个 100 字节的输出缓冲区。
但是……每个 RGB 像素的大小不是 3 个字节(24 位)吗?那么未压缩的数据实际上不应该是 width X height X 3
字节吗?
为什么不呢?
我注意到对于使用jpeg_write_scanlines
的代码,要压缩的缓冲区是 width X height X 3
。那么为什么与jpeg_read_scanlines
一起使用的缓冲区只有width X height
?
最佳答案
你一次只读一行
jpeg_read_scanlines(&cinfo, &ptr, 1);
所以你只需要这条线
unsigned char* image = new unsigned char[cinfo.image_width * cinfo.image_height];
成为
unsigned char* image = new unsigned char[cinfo.image_width * cinfo.image_components];
缓冲区的开始被重新用于每条扫描线。您当前的大部分缓冲区实际上是未使用的。
关于c++ - 对 libjpeg : jpeg_read_scanlines 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15103457/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!