我尝试裁剪16位(浮点)/波段TIFF图像,但生成的图像是8位(字节)/波段。我有什么应该做的吗?
from vipsCC import *
input_file_path = 'input.tiff'
output_file_path = 'output.tiff'
bands = 4
bg = VImage.VImage.black(width,height,bands)
im = VImage.VImage(input_file_path) # Giving 16bits(float)/band TIFF image...
im_frag = im.extract_area(dx,dy,width,height)
bg.insertplace(im_frag,0,0)
bg.write(output_file_path) # Results 8bits(byte)/band ...
答案 0 :(得分:1)
a.insertplace(b)
执行就地插入操作。它会直接修改a
,将b
粘贴到其中。如果b
不是正确的类型,则会将其转换为与a
匹配。
你可能想要简单的insert
。尝试:
import sys
from vipsCC import *
im = VImage.VImage(sys.argv[1])
im_frag = im.extract_area(10, 10, 200, 200)
bg = VImage.VImage.black(1000, 1000, 1)
bg = bg.insert(im_frag, 100, 100)
bg.write(sys.argv[2])
a.insert(b)
制作一个新图片,该图片足以容纳a
和b
所有内容,因此会根据需要添加条带,格式化,等等。它也比insertplace
快很多,可以处理任何大小的图像。
您还使用旧的vips7 Python界面。现在有一个新的vips8,它更好一点:
http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/using-from-python.html
大约一年前有一篇博客文章介绍了新界面:
http://libvips.blogspot.co.uk/2014/10/image-annotation-with-pyvips8.html