我尝试在使用OpenImageIO和python进行一些额外的处理后调整图像的大小。然而,这个过程似乎不像PIL那么简单。在PIL中,我可以提供一个新的分辨率,例如512 x 512,它将调整我的图像大小,而不管它是当前的像素方面,并调整它的大小,以适应它的最大长度,使它适合在一个512x512的框内。如何使用OpenImageIO来完成此操作?在
目前这只会拉伸图像以适应INT 512x512。在
buf = oiio.ImageBuf(file)
data = buf.spec()
print data.width
print data.height
resized = oiio.ImageBuf(oiio.ImageSpec (512, 512, 3, oiio.FLOAT))
oiio.ImageBufAlgo.resize(resized, buf, roi=oiio.ROI.All, nthreads=4)
resized.write(output)
为了简单起见,我们假设图像原点是(0,0)(即,它不是“裁剪”或“过扫描”图像)。我们可以考虑宽度大于其长度的图像(“横向”),或长于宽度的图像(“纵向”)。在
我想您需要类似于下面的方法,它将目标宽度用于横向,将目标高度用于纵向,并在另一个方向重新计算适当的大小:
那是我的胡思乱想,你应该测试一下,如果我犯了错误,你应该调整一下。但这就是要点。在
旁白:请注意,当我创建调整大小的buf时,我使用了原始文件的通道数和数据格式,这比在原始文件中硬编码为3个chans float要好一些。在
相关问题 更多 >
编程相关推荐