使用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查看):
内容的提问来源于stack exchange,提问作者MichaelGermany
相关产品推荐
相关产品推荐


