You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LibRaw读取DNG后传递像素数据至CImg的格式转换问题

问题:LibRaw交错像素格式转CImg平面格式导致TIFF显示异常

我在Android平台使用C++的LibRaw库读取DNG文件,读取过程正常。但将读取到的像素数据传入CImg库进行旋转等图像处理操作后,生成的TIFF图像显示异常。

我推测问题源于像素存储顺序不匹配:LibRaw输出的是RGBGRGBG...的交错格式,而CImg采用RRR...GGG...BBB...的平面格式。请问如何将RGBGRGBG格式转换为RRR...GGG...BBB格式?

以下是我的代码:

LibRaw rawProcessor;
rawProcessor.open_file("file.dng");
rawProcessor.unpack();
int  ret2=rawProcessor.dcraw_process();
libraw_processed_image_t* image = rawProcessor.dcraw_make_mem_image(&ret2);

float xres=72.0;
CImg<unsigned char> cimgOriginal(image->data,image->width,image->height, true);
cimgOriginal.shift(10*(-1), 10*(-1),0,0,0);
cimgOriginal.rotate(360.0-5, (float) 1200, (float) 800,0,0);
cimgOriginal.save_tiff("file.tiff", 0, &xres,0,false);

左侧为原始DNG图像,右侧为CImg导出的TIFF图像(均导入Photoshop查看):
原始DNG与导出TIFF对比

内容的提问来源于stack exchange,提问作者MichaelGermany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:33:23