我正在尝试在 Ubuntu 16.04 LTS 上安装Sharp。
我原本没有vips,所以我安装了
sudo apt-get install libvips-dev
Run Code Online (Sandbox Code Playgroud)
这修复了第一个错误,但现在我遇到了另一个错误:
In file included from ../src/common.cc:25:0:
/usr/include/vips/vips8:35:25: fatal error: glib-object.h: No such file or directory
compilation terminated.
sharp.target.mk:115: recipe for target 'Release/obj.target/sharp/src/common.o' failed
make: *** [Release/obj.target/sharp/src/common.o] Error 1
make: Leaving directory '/home/rachel/node_modules/sharp/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:269:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) …Run Code Online (Sandbox Code Playgroud) 我有一个图像,6130x5548 pixels我想重新缩放它,以便最长的一边是32768 pixels(然后做一个具有 7 个缩放级别的瓷砖金字塔)。我不明白vips resize是这样的事情的明显方式,因此我尝试了下面的行
vips resize image_in.tif img_rescaled.tif 5.345513866231648
Run Code Online (Sandbox Code Playgroud)
数字5.34551只是比率32768/6130,沿 my 的比例因子x axis。如果我想指定返回图像的像素的确切尺寸,我该怎么做?
我试图vips thumbnail用于此目的,我不知道是否推荐这样做,但它确实有效。
vips thumbnail image_in.tif img_rescaled.tif 32768
Run Code Online (Sandbox Code Playgroud)
请问这样可以吗?
此外,这两种方法在 MB 大小方面给出了完全不同的输出。虽然vips thumbnail产生了tif与尺寸2.8Gb的vips resize调用返回一个tif与大小1.8Gb。
这两个图像有(显然)相同尺寸32768x29657 pixels,相同的分辨率72dpi,但不同bit depth的tif距离 vips thumbnail有24 bit depth,而从一个vips resize 16 bit depth。原图有bit depth=16 …
我对图像处理完全陌生.我对JPEG内部及其工作原理一无所知.
我想知道,如果我能找到一些执行以下简单操作的ruby代码:
我特别感兴趣的是如何使用ruby-vips库来实现这一点
https://github.com/ender672/ruby-vips
我的目标 - 学习如何使用ruby-vips执行基本图像处理操作(伽马校正,亮度,色调......)
任何链接到比'hello world'更复杂的工作示例 - 就像在ruby-vips的github页面上一样,将非常感谢!
如果有ruby-vips的替代品,我也会感谢他们.
UPDATE
自从我问这个问题以来发生了很多事情:
将图像大小调整为 200% 会产生 Pillow 和 pyvips 之间的质量差异。
虽然 Pillow 在再现方面非常准确,但 vips 夸大了噪音和对比度。
我需要对非常大的图像使用vips,但质量并不令人满意。知道如何从贵宾那里获得更好的升级吗?(从我收集到的文档中,升级对 VIP 来说并不是那么重要,而且大多数人的想法都在缩减)。
例子:
from PIL import Image
import pyvips
import numpy as np
#Vips
img = pyvips.Image.new_from_file("mypic.jpg", access='sequential')
out = img.resize(2, kernel = "linear")
out.write_to_file("mypic_vips_resized.tif")
#Pillow
img = np.array(Image.open("mypic.jpg"))
h, w = img.shape[:2]
out = Image.fromarray(img,mode="RGB")
out = out.resize((w*2,h*2), Image.BILINEAR)
out.save("mypic_PIL_resized.tif", format='TIFF', compression='None')
Run Code Online (Sandbox Code Playgroud)
抽象示例(10*10 像素)
我正在寻找一个能够读取图像文件(任何格式)的某个区域而无需首先读取整个图像文件的库(任何语言)。
我遇到过一些选项,例如 vips,它确实不会将整个图像保留在内存中,但似乎仍然需要从头开始完整读取它。
我意识到这可能不适用于 jpeg 等压缩格式,但理论上听起来 bmp 或 tiff 应该允许这种类型的读取。
我试图弄清楚如何通过 python 将多个图像与 vips 结合起来。我在一个文件夹中有 30 个(但可以超过 600 个)条纹 png 文件,它们的分辨率为 854x289920(所有分辨率都相同)...
如果我尝试使用 MemmoryError 将它们水平连接在一起,Python 中的 PIL 将立即失效。所以我到处搜索,发现 VIPS 可以做我需要加入图像并根据结果制作深度缩放图像的两件事。
不幸的是我不知道如何在 python 中正确地水平连接它们。
我在数组中有一个来自文件夹的图像列表,但是我如何循环遍历它们并按顺序将连接的图像写入磁盘?
我正在使用 libvips 来旋转图像。我正在使用具有 3002 MB Ram 和 512MB 临时存储的 VM。AWS Lambda 机器。
我运行旋转图像的命令是
vips rot original.jpg rotated.jpg d90
Run Code Online (Sandbox Code Playgroud)
它抛出以下错误
Exit Code: 1, Error Output: ERROR: wbuffer_write: write failed unix error: No space left on device
Run Code Online (Sandbox Code Playgroud)
jpg 图像大约为 10Mb。
我正在使用 Vips 通过 Shrine 调整图像大小,希望可以使用 Vips 库在图像顶部合并一层文本。
ImageProcessing::Vips.source(image).resize_to_fill!(width, height)
Run Code Online (Sandbox Code Playgroud)
这段代码效果很好,如何在 resize_to_fill 之后添加一层文本?
目标是用白色文本编写“Hello world”,并在图像中心放置 CSS 文本阴影。
我试过写这样的东西,但到目前为止我只收到错误:
Vips\Image::text('Hello world!', ['font' => 'sans 120', 'width' => $image->width - 100]);
Run Code Online (Sandbox Code Playgroud) 我是 Docker 新手,正在尝试为这个新的 Rails 7 应用程序创建一个 Dockerfile。我使用 vips 而不是 imagemagick 来提高内存。
我的本地机器是 Mac,因此brew install vips可以处理我的非 docker 开发流程,但使用 ruby-vips gem 或从源代码安装的情况不太好。
运行$ docker compose up结果为:
/usr/local/bundle/gems/ffi-1.15.5/lib/ffi/library.rb:145:in block in ffi_lib': Could not open library 'vips.so.42': vips.so.42: cannot open shared object file: No such file or directory. (LoadError)
Run Code Online (Sandbox Code Playgroud)
使用以下 docker-compose.yml:
version: "3.9"
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b …Run Code Online (Sandbox Code Playgroud)