问题标签 [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 回答
896 浏览

php - 如何在 PHP 中优化 VIPS 性能

我想尽可能快地将作为字符串保存在变量中的图像转换为 WebP 格式,同时缩小较大的图像但不放大较小的图像。基本系统是带有 PHP 7.3 的 Debian 9.9。我尝试测量以下技术的速度:imagejpegimagewebp、 使用cwepphp-vips。我使用了以下代码:

我在一个循环中调用了 , 和 10 次,运行时在几秒钟$jpeg()内是$webp()$cwebp()$vips()

所以调用cwebpCLI 工具似乎是最快的方法,这令人惊讶。我已经读过很多次了,这vips是一个非常快的工具(大部分都比 快imagemagick),所以我想专注于vips.

谁能帮我优化$vips()以获得更好的性能?writeToBuffer()也许有一些resize()我不知道的选项。非常重要的是,所有操作都只在内存中工作,而无需从磁盘读取文件或将文件存储在磁盘上。

0 投票
2 回答
241 浏览

python - 如何在不将整个图像加载到内存的情况下将单个 tif 图像部分加载到 numpy 数组中?

所以需要处理一个 4GB 的 .TIF 图像,作为内存限制,我无法将整个图像加载到 numpy 数组中,所以我需要从硬盘中懒惰地加载它。所以基本上我需要并且需要在 python 中作为项目要求来完成。我还尝试在 PyPi tifffile中寻找 tifffile 库,但没有发现任何有用的信息,请帮忙。

0 投票
1 回答
252 浏览

python - 如何防止 Pyvips 拉伸图像

我正在尝试使用 pyvips 将多个图像连接在一起,但在此过程中图像的宽度增加了一倍以上,我似乎无法弄清楚为什么

这是我的代码的关键部分:

5 个文件的预期输出应为:

但我的实际输出是:

图片:https ://imgur.com/a/IDuRtIK

这是什么原因造成的?

0 投票
1 回答
85 浏览

c - How to add spacing between characters in text using VIPS?

I'm using the VIPS library for manipulating images and adding text to them. I want to know how to add spacing to characters in text?

The following image is an example of what I'm talking about.

Tracking and kerning

0 投票
1 回答
152 浏览

c - 如何使用 VIPS 减少文本中的行间距?

使用 VIPS,如何减少文本中的行间距?有一个可选参数来确定行之间vips.Image.text()spacing这个空间。但是,我可以使间距更大但不能更小。例如,在下面的代码中(使用 VIPS 的 Lua 绑定,lua-vips),0作为参数传递spacing...

产生以下输出:

以 0 间距测试

正如预期的那样,使用更大的值会使间距更大,因此使用负值可能会使间距更小。但是,发生的情况是 lib 给了我一个警告:

(lua-vips:17404): GLib-GObject-WARNING **: value "-1" of type 'gint' is invalid or out of range for property 'spacing' of type 'gint'

我知道 VIPS 使用 Pango 处理文本,所以我不确定这可能是 VIPS 尚不支持的东西,还是 Pango 尚不支持的东西。

0 投票
3 回答
507 浏览

image-processing - Remove color cast using libvips

I have sRGB images with color casts. To remove it manually I usually use Photoshop Level Adjustments. Photoshop also have tools for that: Auto Contrast or even better Auto Tone which also takes shadows, midtones & highlights into account.

If I remove the cast manually I adjust each of the RGB channels individually so that the darkest pixels are set to pure black and the lightest to pure white and then redistribute all other values (spreading the histogram). This is a simple approach but shows good results for my images.

In my node.js app I'm using sharp for image processing which uses libvips as its processing engine. I tried to remove the cast with .normalize() but this command works on all channels together and not individual for each of the RGB channels. So it doesn't work for me. I also asked this question on the sharp project page. I tested the suggestion from lovell to try it with hist_local but the results are not useable for me.

Now I would like to find out how this could be done using the native libvips. I've played around with nip2 GUI and different commands but could not figure out how it could be achieved:

  1. Histogram > Equalise Histogram > Global => Picture looks over saturated
  2. Image > Levels > Scale to 0 - 255 => Channels ar not all spreading from 0 - 255 (I don't understand exactly what this command does?)

Thanks for every hint!

Addition Here is a example with pictures from Photoshop to show what I want.

The source image is a picture of a frame from a film negative. Image before processing

Step1 Invert image Image after inversion

Step2 using Auto tone in Photoshop (works the same way as my description above about manually remove the color cast) Image after Auto Tone

This last picture is ok for me.

0 投票
1 回答
164 浏览

python - libvips 最近邻/双三次深度缩放金字塔创建

我正在将我的一些代码从 openzoom.py 移到 Libvips 上,但不确定如何规定插值方法,这很重要。我至少需要能够在一种情况下使用双三次/双线性,在另一种情况下使用最近的邻居。

我的旧代码如下:

目前,使用 pyvips 我有以下

任何帮助将不胜感激 :)

0 投票
1 回答
276 浏览

ruby - 如何使用 Ruby-Vips 高效地创建纯色背景图像

我想使用 Ruby-Vips 提供的方法创建一个给定大小的纯色背景画布。现在,我可以这样做,如下所示:

但是,必须创建一个黑色图像,然后以这种方式逐个像素地应用颜色,这似乎很奇怪。有没有更好或更有效的方法来实现这一点?

0 投票
1 回答
1629 浏览

python - 有效地将图块保存到 bigtiff 图像

我有数千个 dtype np.uint8 的 256 x 256 像素的灰度图块,我想尽快将它们组合成一个 BigTiff 金字塔图像。

我目前的方法是创建一个具有最终图像大小的 numpy 数组,我在其中粘贴所有图块(这只需要几秒钟)。为了节省,我研究了多种方法。

1)Tifffile,使用该imsave功能,结果非常慢,我估计至少 10 分钟以上的文件最终会在 700MB 左右

2) pyvips,通过使用 将大量 numpy 图像转换为 pyvips 图像pyvips.Image.new_from_memory,然后使用以下方法保存它:

构建 vips_img 大约需要 42 秒,将其保存到磁盘需要大约 30 秒,但这一切都是使用单个线程完成的。我想知道是否有任何方法可以更有效地做到这一点,或者使用不同的方法或利用多线程。可以使用高速存储,因此可以先以不同的格式保存内容,或者在需要时将其转换为不同的编程语言。

只是头脑风暴:所有图块都来自已经存在的 BigTiff 图像,并且已经通过预处理管道,现在需要再次保存。我想知道是否有一种方法可以有效地复制原始文件并替换其中的数据。

编辑更多信息:

图像的尺寸大约为 55k x 45k,但我也想将此代码用于更大的图像,例如高达 150k x 150k。

对于 55k x 45k 的图像和 256 x 256 的图块,我们谈论的是约 53k 的图块。这些图块并不都包含我感兴趣的信息,所以最后我可能会得到我想再次保存的 50% 的图块,剩下的图像可能是黑色的。以相同的格式保存处理的内容对我来说似乎是最方便的方法,因为我想将其显示为覆盖

使用中间解决方案进行编辑

之前我提到从 numpy 数组创建 pyvips 图像需​​要 40 秒。原因是我的输入是一个转置的 numpy 数组。转置操作本身非常快,但我怀疑它像以前一样保留在内存中,这在以转置形式读取时导致了很多缓存未命中。

所以目前以下行需要 30 秒(写入 200MB 文件)

如果这可以更快,那就太好了,但这似乎是合理的。

代码示例

在我的例子中,只有大约 15% 的图块是有趣的并且会被预处理。这些都在图像中。我仍然希望将其保存为千兆像素格式,因为这允许我使用 openslide 使用其方便的库检索图像的部分内容。在示例中,我刚刚生成了约 15% 的随机数据来模拟黑色/信息的百分比,示例的性能类似于数据更分散在图像中的实际实现。

输出

我没有等待 dzsave 完成,因为它需要几分钟。

0 投票
1 回答
843 浏览

python - 使用 JPEG 压缩 (python) 保存多通道 (n > 3) 图像

我正在处理一些超过 3 个通道的生物医学图像。图像相当大,所以我更愿意将它们存储为 JPEG 压缩的金字塔形 TIFF 文件。与其他压缩方案(例如 LZW、Deflate)相比,这给出了一个数量级的压缩比。

我目前正在使用pyvips'stiffsave函数来保存这些图像。使用其他压缩方案,我可以保存具有任意数量通道的图像。但是,使用 JPEG 压缩后,我意识到保存的图像只能有 1 或 3 个通道。

如果 JPEG 的算法可以压缩 1 个通道,那么肯定有办法将多个 JPEG 压缩的单通道图像打包到一个文件中吗?

有谁知道使用以下标准将 n > 3 个通道图像存储到单个文件中的方法?

  • JPEG 压缩(或具有相当性能的算法)
  • 使用 GUI 图像查看软件(如 ImageJ)轻松查看
  • 我真的不想将每个频道存储为单独的文件。
  • 以金字塔格式存储的图像
  • 蟒蛇 3