为什么vipsCC在裁剪后将16位(浮点)/带TIFF图像转换为8位(字节)/带TIFF?

时间:2015-12-17 15:16:33

标签: python tiff vips

我尝试裁剪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 ...

1 个答案:

答案 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)制作一个新图片,该图片足以容纳ab所有内容,因此会根据需要添加条带,格式化,等等。它也比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