Image processing 执行图像棱锥体时的libvips和填充
我正在尝试使用非方形图像制作一个金字塔形的瓷砖Image processing 执行图像棱锥体时的libvips和填充,image-processing,gdal,vips,Image Processing,Gdal,Vips,我正在尝试使用非方形图像制作一个金字塔形的瓷砖(宽度:32768px,高度:18433px) 我使用的libvips如下: vips dzsave my_image.tif out_folder --layout google --suffix .png 出于同样的目的,我还使用了gdal2tiles: python gdal2tiles.py -p raster -z 0-7 -w none my_image.tif 因为我的图像不是正方形,所以在创建256x256平铺时需要一些填充。但是
(宽度:32768px,高度:18433px)
我使用的libvips
如下:
vips dzsave my_image.tif out_folder --layout google --suffix .png
出于同样的目的,我还使用了gdal2tiles
:
python gdal2tiles.py -p raster -z 0-7 -w none my_image.tif
因为我的图像不是正方形,所以在创建256x256
平铺时需要一些填充。但是,vip
和gdal2tiles
之间的填充不同。前者在瓷砖底部添加填充物,后者在顶部添加填充物(并且是透明的)。见下图。金字塔根部的256x256
平铺中显示的内容(即zoom level=0
)。我已经手动添加了黄色背景和黑色轮廓
对于vips
,是否可以对gdal2tiles
使用类似的填充,以便磁贴的左下角与图像中的左下角重合?我正在图像上绘制点,因此原点位于左下角会有所帮助
如何在贵宾
中使用透明背景?(不过,最好在另一个帖子中……)
您可以使用
.dz
作为文件扩展名并将参数放在文件名后的方括号中,将dzsave
作为任何VIP操作的输出运行。例如,此命令:
vips dzsave my_image.tif out_folder --layout google --suffix .png
也可以写成:
vips copy my_image.tif out_folder.dz[layout=google,suffix=.png]
因此,您可以通过在运行dzsave之前将输入图像展开为正方形来解决问题
例如:
$ vips gravity Chicago.jpg dir.dz[layout=google,suffix=.png,skip_blanks=0] south-west 32768 32768 --extend white
32768是该图像宽度以上的最接近的二次幂。<代码> SkiPiBLUKS/<代码>选项使得DZStand不输出与空白背景瓦片相等的瓦片。
该命令使该目录/0/0/0.png
:
(我添加了黑线以显示边缘)
要获得透明背景,需要添加alpha。这需要另一个命令,并且超出了vips CLI的真正设计目的
我会切换到类似Python的东西。例如,使用,您可以编写:
import sys
import pyvips
im = pyvips.Image.new_from_file(sys.argv[1], access='sequential')
im = im.addalpha()
# expand to the nearest power of two larger square ... by default, gravity will
# extend with 0 (transparent) pixels
size = 1 << int.bit_length(max(im.width, im.height))
im = im.gravity('south-west', size, size)
im.dzsave(sys.argv[2],
layout='google', suffix='.png', background=0, skip_blanks=0)
要使此x/0/0/0.png
:
(添加绿色背景以显示透明度)谢谢John!CLI很好,我需要在Matlab中这样做,但也需要在Python中这样做,因此我考虑使用命令行,特别是在Matlab中。我还没有尝试过Python脚本,我试图安装VIP,但我得到了一个奇怪的错误
ModuleNotFoundError:没有名为“\u cffi\u backend”的模块,但这可能是因为我的Python。我一周前安装了python3.7.2
,但有些东西看起来不对劲。我还可以问一下为什么瓷砖有橄榄绿的背景吗?这个集合在哪里,以及它与alpha的关系。听起来好像cffi模块未能正确安装,也许您没有安装libffi?我添加了橄榄绿背景以显示透明区域,我将添加注释。
$ ./mkpyr.py ~/pics/Chicago.jpg x