问题标签 [vips]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image-processing - 做图像金字塔时的 libvips 和填充
我正在尝试用非方形图像做一个瓷砖金字塔(width: 32768px and height: 18433px)
我使用libvips
如下:
出于同样的目的,我还使用了gdal2tiles
:
因为我的图像不是正方形的,所以256x256
在创建图块时需要一些填充。vips
然而,填充在和之间是不同的gdal2tiles
。前者在瓦片底部添加填充,而后者在顶部(并且是透明的)。见下图。256x256
金字塔根部的图块中显示的内容(即zoom level=0
)。我手动添加了黄色背景和黑色轮廓。
使用vips
,是否可以有类似的填充,以gdal2tiles
使图块的左下角与图像的左下角重合?我在图像上绘制点,因此将原点放在左下角会有所帮助。
我怎样才能有透明背景vips
?(虽然最好在单独的帖子中......)
image-processing - 使用 libvips 重新缩放图像
我有一个图像,6130x5548 pixels
我想重新缩放它,以便最长的边是32768 pixels
(然后做一个具有 7 个缩放级别的瓷砖金字塔)。我不明白vips resize
是这样的明显方式,因此我尝试了下面的行
数字5.34551
只是比例32768/6130
,我的比例因子x axis
。如果我想以像素为单位指定返回图像的确切尺寸,我该怎么做?
我尝试vips thumbnail
用于此目的,我不知道这是否推荐,但它确实有效。
请问这样的可以吗?
此外,这两种方法在 MB 大小方面给出了完全不同的输出。虽然vips thumbnail
产生一个with tif
size调用返回一个with size 。2.8Gb
vips resize
tif
1.8Gb
两幅图像(显然)具有相同的尺寸32768x29657 pixels
、相同的分辨率72dpi
但不同bit depth
的tif
from vips thumbnail
具有24 bit depth
而一个 from vips resize
16 bit depth
。原图有bit depth=16
。
此外,我了解所使用的算法vips translate
对生成的文件大小起着重要作用。我可以在使用vips thumbnail
和/或bit depth
请时设置算法吗?
ruby - Ruby VIPS image.write_to_memory 在不同的环境中产生不同的结果
我们需要打开一个图像并将其像素写入内存,以便 C 库可以进一步处理它。我们使用以下行来执行此操作:
但是,似乎在内存中写入的内容因环境而异。我们正在通过 Docker 在 macOS High Sierra 和 Ubuntu Xenial 上使用vips-8.8.0
和ruby-vips (2.0.13)
. 我们已经对写入内存的结果进行了 MD5 编辑:
以下是两者的结果:
- macOS 高山脉:
141e9b6a84f4ca05a7699b33fc0ef808
- 通过 Docker 的 Ubuntu Xenial:
019a568e40dcc41ac6496da06d29d723
我不知道为什么会发生这种情况,我应该在哪里进一步观察。任何提示将不胜感激!
c - 在 C 共享库中调用 VIPS_INIT 的位置
我正在开发一个 C 共享库,该库将包含一个接收文件名的函数,并返回指向图像的 C 数组表示的指针。
我看VIPS_INIT
需要在程序的开头设置,withargv[0]
作为它的参数。但是,由于这是一个共享库,我不确定我需要将它放在哪里。
python-3.x - 使用 PIL/OpenCV/Matplotlib 加载大型 .JP2 图像时,如何避免“分段错误(核心转储)”错误?
我在一个简短的脚本中运行以下简单的行,没有任何问题:
但是,如果加载的 .JP2 > ~500 MB,Python3 在尝试加载图像时会抛出以下错误:
“分段错误(核心转储)”
这不应该是 RAM 问题,因为发生错误时仅使用了约 40% 的可用 RAM + 移除 RAM 或将 RAM 添加到计算机时错误保持不变。当使用其他方式加载图像时,错误也保持不变,例如使用 PIL。
有没有办法避免这个错误或解决它?非常感谢!
polygon - 使用 pyvips 绘制多条折线
我想在大图像上绘制多边形/折线。
所以,我正在从 PIL/opencv 迁移到 pyvips。最近,我遇到了loadsvg_buffer
一种不用draw_mask
and方法就可以做到的draw_image
方法。
有人可以给我一个使用loadsvg_buffer
or draw_mask
or的填充示例吗draw_image
?该文档没有太大帮助。
另外,如果我必须绘制多条折线怎么办?
欢迎任何其他见解。
ruby-on-rails - 在 Rails 6.0 上使用哪个 heroku buildpack 来支持 VIPS?
在 Heroku 上,我想使用带有 Active Storage 和 VIPS 的 Rails 6.0 来实现快速和低内存的图像转换。
我尝试按照这里的说明https://github.com/janko/image_processing/issues/32,但构建失败:
我有这些构建包:
heroku-社区/apt
我推荐使用哪些构建包?
如果不存在,我将如何为 Heroku buildpack 添加 VIPS 支持?
python - 使用 vips 逐行比较图像
背景:我有需要比较差异的图像。这些图像很大(大约 1400x9000 像素)、机器生成且高度受限(特定线性 UI 的屏幕截图),并且预计几乎相同,不同之处是以下三种可能性之一:
- 图 1 有一个部分 图 2 缺失
- 图像 1 缺少部分图像 2
- 两张图片都有给定的部分,但其内容不同
我正在尝试构建一个工具来突出人类审阅者的差异,本质上是面向行的差异的图像版本。为此,我试图逐行扫描图像并比较它们以确定这些行是否相同。我的最终目标是一个实际的类似差异的输出,它可以检测到部分丢失/添加/不同,并尽快将相同内容的其余部分同步图像,但对于第一次剪辑,我是采用更简单的方法,其中两个图像重叠(alpha 混合),不同的线条用特定颜色突出显示(即 alpha 与第三行纯色混合)。起初我尝试使用 Python Imaging Library,但这太慢了几个数量级,所以我决定尝试使用vips
,这应该更快。vips
但是,我完全不知道如何在使用操作后表达我的意思。更简单版本的伪代码本质上是:
我pyvips
在我的项目中使用,但我也对使用普通vips
或任何其他绑定的代码感兴趣,因为这些操作是共享的,并且很容易跨方言翻译。
编辑 2:缺少/添加/更改部分的全尺寸图像:
deepzoom - 使用 CPP 的天珠查看器
我正在 CPP 中寻找深度缩放图像 (DZI) 查看器。目前,我们有一个用javascript(Open Seadragon)、java和C#设计的天珠图像查看器。我正在寻找可以集成到我的 CPP 应用程序中的开源查看器。