问题标签 [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.

0 投票
1 回答
872 浏览

image-processing - 做图像金字塔时的 libvips 和填充

我正在尝试用非方形图像做一个瓷砖金字塔(width: 32768px and height: 18433px)

我使用libvips如下:

出于同样的目的,我还使用了gdal2tiles

因为我的图像不是正方形的,所以256x256在创建图块时需要一些填充。vips然而,填充在和之间是不同的gdal2tiles。前者在瓦片底部添加填充,而后者在顶部(并且是透明的)。见下图。256x256金字塔根部的图块中显示的内容(即zoom level=0)。我手动添加了黄色背景和黑色轮廓。

使用vips,是否可以有类似的填充,以gdal2tiles使图块的左下角与图像的左下角重合?我在图像上绘制点,因此将原点放在左下角会有所帮助。

我怎样才能有透明背景vips?(虽然最好在单独的帖子中......)

在此处输入图像描述

0 投票
1 回答
3261 浏览

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 depthtiffrom vips thumbnail具有24 bit depth而一个 from vips resize 16 bit depth。原图有bit depth=16

此外,我了解所使用的算法vips translate对生成的文件大小起着重要作用。我可以在使用vips thumbnail和/或bit depth请时设置算法吗?

0 投票
0 回答
71 浏览

ruby - Ruby VIPS image.write_to_memory 在不同的环境中产生不同的结果

我们需要打开一个图像并将其像素写入内存,以便 C 库可以进一步处理它。我们使用以下行来执行此操作:

但是,似乎在内存中写入的内容因环境而异。我们正在通过 Docker 在 macOS High Sierra 和 Ubuntu Xenial 上使用vips-8.8.0ruby-vips (2.0.13). 我们已经对写入内存的结果进行了 MD5 编辑:

以下是两者的结果:

  • macOS 高山脉:141e9b6a84f4ca05a7699b33fc0ef808
  • 通过 Docker 的 Ubuntu Xenial:019a568e40dcc41ac6496da06d29d723

我不知道为什么会发生这种情况,我应该在哪里进一步观察。任何提示将不胜感激!

0 投票
1 回答
72 浏览

c - 在 C 共享库中调用 VIPS_INIT 的位置

我正在开发一个 C 共享库,该库将包含一个接收文件名的函数,并返回指向图像的 C 数组表示的指针。

我看VIPS_INIT需要在程序的开头设置,withargv[0]作为它的参数。但是,由于这是一个共享库,我不确定我需要将它放在哪里。

0 投票
1 回答
701 浏览

python-3.x - 使用 PIL/OpenCV/Matplotlib 加载大型 .JP2 图像时,如何避免“分段错误(核心转储)”错误?

我在一个简短的脚本中运行以下简单的行,没有任何问题:

但是,如果加载的 .JP2 > ~500 MB,Python3 在尝试加载图像时会抛出以下错误:

“分段错误(核心转储)”

这不应该是 RAM 问题,因为发生错误时仅使用了约 40% 的可用 RAM + 移除 RAM 或将 RAM 添加到计算机时错误保持不变。当使用其他方式加载图像时,错误也保持不变,例如使用 PIL。

有没有办法避免这个错误或解决它?非常感谢!

0 投票
1 回答
234 浏览

polygon - 使用 pyvips 绘制多条折线

我想在大图像上绘制多边形/折线。

所以,我正在从 PIL/opencv 迁移到 pyvips。最近,我遇到了loadsvg_buffer一种不用draw_maskand方法就可以做到的draw_image方法。

有人可以给我一个使用loadsvg_bufferor draw_maskor的填充示例吗draw_image?该文档没有太大帮助。

另外,如果我必须绘制多条折线怎么办?

欢迎任何其他见解。

0 投票
1 回答
1065 浏览

ruby-on-rails - 在 Rails 6.0 上使用哪个 heroku buildpack 来支持 VIPS?

在 Heroku 上,我想使用带有 Active Storage 和 VIPS 的 Rails 6.0 来实现快速和低内存的图像转换。

我尝试按照这里的说明https://github.com/janko/image_processing/issues/32,但构建失败:

我有这些构建包:

  1. heroku-社区/apt

  2. https://github.com/zoras/heroku-buildpack-libvips

我推荐使用哪些构建包?

如果不存在,我将如何为 Heroku buildpack 添加 VIPS 支持?

0 投票
2 回答
373 浏览

python - 使用 vips 逐行比较图像

背景:我有需要比较差异的图像。这些图像很大(大约 1400x9000 像素)、机器生成且高度受限(特定线性 UI 的屏幕截图),并且预计几乎相同,不同之处是以下三种可能性之一:

  • 图 1 有一个部分 图 2 缺失
  • 图像 1 缺少部分图像 2
  • 两张图片都有给定的部分,但其内容不同

我正在尝试构建一个工具来突出人类审阅者的差异,本质上是面向行的差异的图像版本。为此,我试图逐行扫描图像并比较它们以确定这些行是否相同。我的最终目标是一个实际的类似差异的输出,它可以检测到部分丢失/添加/不同,并尽快将相同内容的其余部分同步图像,但对于第一次剪辑,我是采用更简单的方法,其中两个图像重叠(alpha 混合),不同的线条用特定颜色突出显示(即 alpha 与第三行纯色混合)。起初我尝试使用 Python Imaging Library,但这太慢了几个数量级,所以我决定尝试使用vips,这应该更快。vips但是,我完全不知道如何在使用操作后表达我的意思。更简单版本的伪代码本质上是:

pyvips在我的项目中使用,但我也对使用普通vips或任何其他绑定的代码感兴趣,因为这些操作是共享的,并且很容易跨方言翻译。

编辑:根据要求添加示例图像图像1 图2

编辑 2:缺少/添加/更改部分的全尺寸图像:

0 投票
1 回答
792 浏览

python-3.x - 如何使用 VIPS 进行图像标准化?

我想标准化一组图像的曝光和调色板。对于上下文,这是用于在医学图像的图像分类中训练神经网络。我也在为数十万张图像执行此操作,因此效率非常重要。

到目前为止,我一直在使用 VIPS,特别是 PyVIPS,并且更喜欢使用该库的解决方案。在找到这个答案并查看文档后,我尝试了

但这似乎总是会产生纯白色的图像。

0 投票
1 回答
150 浏览

deepzoom - 使用 CPP 的天珠查看器

我正在 CPP 中寻找深度缩放图像 (DZI) 查看器。目前,我们有一个用javascript(Open Seadragon)、java和C#设计的天珠图像查看器。我正在寻找可以集成到我的 CPP 应用程序中的开源查看器。