libvips 最近邻/双三次深度缩放金字塔创建
libvips Nearest Neighbor / Bicubic Deep Zoom Pyramid Creation
我正在将我的一些代码从 openzoom.py 移到 Libvips 上,但我不确定如何规定插值方法,这很重要。我至少需要能够在一种情况下使用 bicubic/bilinear,在另一种情况下使用最近的邻居。
我的旧代码如下:
creator = deepzoom.ImageCreator(tile_size=128, tile_overlap=2, tile_format="png",
image_quality=0.8, resize_filter="nearest")
creator.create(sourceFile, destFile)
目前,使用pyvips我有以下内容
image = pyvips.Image.new_from_file(sourceFile)
image.dzsave(destFile, tile_size=128, overlap=2,
suffix='.png[Q=80]')
任何帮助将不胜感激:)
默认情况下,dzsave 将对每个 2x2 像素块进行平均,这相当于双线性。
有时,例如对于像素值表示标签而不是强度的图像,您需要进行非插值缩小。对于这些情况,您可以将 region_shrink
参数用于 select median
或 mode
,它们都将保留标签值。
我会使用:
image = pyvips.Image.new_from_file(sourceFile, access='sequential')
image.dzsave(destFile,
overlap=1,
tile_size=126,
region_shrink='mode',
suffix='.png')
不要忘记设置 access
提示。对于不支持随机访问的大图像,它会大大提高速度和内存行为。
PNG Q 数字设置输出调色图像时的量化质量。 Perhaps you mean compression
? libvips 默认为 6,PNG 标准。
你确定要overlap=2
吗? deepzoom 标准是 overlap 1。Overlap 1 意味着每个图块的边缘周围有一个额外的像素,因此图像中心的图块将与其邻居共享每个边缘上的两个像素。设置 overlap=2
意味着您将有四个像素重叠,令人困惑。
同样,tile_size=128
意味着您的大部分图块都是 132x132 像素。这对 PNG 无关紧要,但 JPG 最适合轴上 8 的倍数。我会将 tile_size
设置为 (128 - 2 * overlap),默认情况下 deepzoom 会这样做。
git master libvips 还添加了 max
、min
和 nearest
(始终选择左上角的像素)。一个分支有lanczos3
,但由于各种原因一直没有合并
我正在将我的一些代码从 openzoom.py 移到 Libvips 上,但我不确定如何规定插值方法,这很重要。我至少需要能够在一种情况下使用 bicubic/bilinear,在另一种情况下使用最近的邻居。
我的旧代码如下:
creator = deepzoom.ImageCreator(tile_size=128, tile_overlap=2, tile_format="png",
image_quality=0.8, resize_filter="nearest")
creator.create(sourceFile, destFile)
目前,使用pyvips我有以下内容
image = pyvips.Image.new_from_file(sourceFile)
image.dzsave(destFile, tile_size=128, overlap=2,
suffix='.png[Q=80]')
任何帮助将不胜感激:)
默认情况下,dzsave 将对每个 2x2 像素块进行平均,这相当于双线性。
有时,例如对于像素值表示标签而不是强度的图像,您需要进行非插值缩小。对于这些情况,您可以将 region_shrink
参数用于 select median
或 mode
,它们都将保留标签值。
我会使用:
image = pyvips.Image.new_from_file(sourceFile, access='sequential')
image.dzsave(destFile,
overlap=1,
tile_size=126,
region_shrink='mode',
suffix='.png')
不要忘记设置 access
提示。对于不支持随机访问的大图像,它会大大提高速度和内存行为。
PNG Q 数字设置输出调色图像时的量化质量。 Perhaps you mean compression
? libvips 默认为 6,PNG 标准。
你确定要overlap=2
吗? deepzoom 标准是 overlap 1。Overlap 1 意味着每个图块的边缘周围有一个额外的像素,因此图像中心的图块将与其邻居共享每个边缘上的两个像素。设置 overlap=2
意味着您将有四个像素重叠,令人困惑。
同样,tile_size=128
意味着您的大部分图块都是 132x132 像素。这对 PNG 无关紧要,但 JPG 最适合轴上 8 的倍数。我会将 tile_size
设置为 (128 - 2 * overlap),默认情况下 deepzoom 会这样做。
git master libvips 还添加了 max
、min
和 nearest
(始终选择左上角的像素)。一个分支有lanczos3
,但由于各种原因一直没有合并