问题标签 [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 tifsize调用返回一个with size 。2.8Gbvips resizetif1.8Gb
两幅图像(显然)具有相同的尺寸32768x29657 pixels、相同的分辨率72dpi但不同bit depth的tiffrom 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_maskand方法就可以做到的draw_image方法。
有人可以给我一个使用loadsvg_bufferor draw_maskor的填充示例吗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 应用程序中的开源查看器。


