Make raw data copy only when needed
This commit is contained in:
+4
-5
@@ -37,6 +37,8 @@ bool loadRAW(QString path, ImageInfoData &info, RawImageAbs **image, QImage *qi
|
||||
if(raw.unpack())
|
||||
return false;
|
||||
|
||||
if(image)
|
||||
{
|
||||
libraw_rawdata_t rawdata = raw.imgdata.rawdata;
|
||||
size_t size = rawdata.sizes.width*rawdata.sizes.height;
|
||||
|
||||
@@ -47,17 +49,14 @@ bool loadRAW(QString path, ImageInfoData &info, RawImageAbs **image, QImage *qi
|
||||
uint w=rawdata.sizes.left_margin+rawdata.sizes.width;
|
||||
size_t pitch = rawdata.sizes.raw_pitch/sizeof(uint16_t);
|
||||
|
||||
for(size_t i=rawdata.sizes.top_margin;i<h;i+=2)
|
||||
for(size_t i=rawdata.sizes.top_margin;i<h;i++)
|
||||
{
|
||||
for(size_t o=rawdata.sizes.left_margin;o<w;o+=2)
|
||||
for(size_t o=rawdata.sizes.left_margin;o<w;o++)
|
||||
{
|
||||
uint16_t p = rawdata.raw_image[i*pitch+o];
|
||||
out[d++] = p;
|
||||
}
|
||||
}
|
||||
|
||||
if(image)
|
||||
{
|
||||
*image = new RawImage<uint16_t>(w, h, out);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user