gpt4 book ai didi

c - 编写未压缩的 JPEG 或 PNG 图像的简单方法?

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:50 25 4
gpt4 key购买 nike

我在内存中有一张原始图像,组织为一个 32 位 RGB 值数组。我想尽快将其写入图像文件,以便释放内存。有没有一种方法可以执行以下操作来编写未压缩的 JPEG、PNG 或 TIFF 图像?或者我应该说,哪些图像格式与这种写入原始像素数据的方法兼容?请注意,左上角像素位于像素数据的前 4 个字节中。

void write_image(uint32_t *pixels, int width, int height) {
FILE *file=fopen("file.jpg","wb");
write_header (file, width, height);
fwrite (pixels,1,width*height*4,file); // write raw pixel data
write_end (file);
fclose(file);
}

最佳答案

您似乎有两个不同的问题或动机。

首先,希望以某种未压缩 格式写入图像以(大概)提高速度。 PNG 和 JPEG 是压缩格式,但您可以指示编码器(至少在某些 PNG 实现中)使用“无压缩”设置。

但是:a) 很少有“优化”会产生重大影响的情况,普通的压缩器非常快。

b) 即使在使用某些 compression_level=0 设置进行编码时,您仍然编码特定格式的图像(通常是标题,首先)。是什么让我们想到了第二个动机。

其次,您似乎不完全(仅)要避免压缩,而是要避免编码。也就是说,您想以未编码(“原始”)格式写入像素。在那种情况下,当然,您不能写入 PNG 或 JPEG 图像。您可以使用自己的或 some standard RAW format , 或准原始 BMP格式。但是您仍然需要注意像素在内存中的组织方式(例如,每个 channel 一个字节?RGB?BGR?RGBA?)以及其他一些问题(例如,BMP 要求 bytes per line 是4).

关于c - 编写未压缩的 JPEG 或 PNG 图像的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com