首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenImageIO在调整大小时将hdr转换为png格式

OpenImageIO在调整大小时将hdr转换为png格式
EN

Stack Overflow用户
提问于 2020-12-13 21:03:49
回答 1查看 91关注 0票数 0

我正在尝试将.hdr和.exr图像转换为调整大小的.png图像。转换部分按预期工作,但当我尝试在保存之前调整图像大小时,结果只是一张黑色图像。我使用的是github最新的OpenImageIO。

代码语言:javascript
复制
// read in an HDR or exr image
 auto in = ImageInput::open (image_path.hdr);
 const ImageSpec& spec = in->spec();
 int w = spec.width;
 int h = spec.height;
 int channels = spec.nchannels;

 // convert float to UNIT8
 std::vector<unsigned char> pixels (w * h * channels);
 in->read_image (TypeDesc::UINT8, pixels.data());
 
 // resize and save to png format
 ImageSpec s;
 s.format = TypeDesc::UINT8;
 s.width = w;
 s.height = h;
 s.nchannels = channels;
 ImageBuf A (s, pixels.data());

// without resizing saving to .png works correctly
A.write(image_path.png);

// this results in an all black image
ROI roi (0, w/2, 0, h/2, 0, 1, 0,channels);
ImageBuf B; 
ImageBufAlgo::resize (B, A, "", 0, roi);
B.write(image_path.png);
EN

回答 1

Stack Overflow用户

发布于 2020-12-15 09:19:44

原来在调整大小时,ImageSpec字段full_width和full_height也需要填写。当它们存在时,调整大小的工作与预期的一样。

代码语言:javascript
复制
ImageSpec s;
s.format = TypeDesc::UINT8;
s.width = w;
s.height = h;
s.full_width = w;
s.full_height = h;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65275912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档