我有大量的缩略图要做.目前,我正在使用ImageMagick,但它证明效率太低(它太慢,使用太多CPU /内存等).
我已经开始评估GraphicsMagick,我希望得到"哇"的结果.我没有得到它们.有人可以快速查看我的基准脚本(仅进行简单的速度和文件大小比较;还没有CPU和内存检查):
这是我得到的示例输出:
'gm convert' took 75.0039 seconds to execute 10 iteration(s).
'convert' took 83.1421 seconds to execute 10 iteration(s).
Average filesize of gm convert: 144,588 bytes.
Average filesize of convert: 81,194 bytes.
Run Code Online (Sandbox Code Playgroud)
GraphicsMagick的速度并不快 - 输出的文件大小比ImageMagick高得多.
我正在为Bash编写一个shellcript,它会为一些相当大量的大图像创建不同大小的缩略图.
我想知道是否有可能让GM/IM在一次运行中创建多个尺寸的拇指,以避免一遍又一遍地加载相同的图像以创建不同的缩略图,从而节省执行脚本的内存和时间?
我需要获取特定的图像裁剪并将其放在某个位置的另一个图像上并调整大小.
我可以裁剪第一个图像并将其保存到一个命令中的文件中,然后我可以在另一个命令中合成这两个图像.但是,我想在一个命令中完成它 - 这可能与graphicsmagick以及如何实现?
以下是我使用atm的两个命令:
gm convert -crop 1457x973+254+413 amber.jpg tmp.jpg
gm composite -geometry 6000x4000+600+600 tmp.jpg lux_bg.png out.jpg
Run Code Online (Sandbox Code Playgroud)
想要这样做的原因是为了避免写入磁盘然后再次读取所有这些都可以在内存中完成.例如,使用ImageMagick,相同的2个命令将在单个命令中写入,如下所示:
convert lux_bg.png \( amber.jpg -crop 1457x973+254+413 \) -geometry 6000x4000+600+600 -composite out.jpg
Run Code Online (Sandbox Code Playgroud)
我现在正在使用ImageMagick进行此操作,但我很乐意使用GraphicsMagick.
我正在使用pgmagick生成一个圆形缩略图.我正在使用类似于此处讨论的过程,这确实为我生成了一个漂亮的圆形缩略图.但是,我需要在圆的半径周围有一个白色边框.
我最初的方法是创建一个具有透明背景的稍大的白色圆圈的新图像,并将缩略图复合在其上,让白色圆圈从缩略图下方"峰顶"并创建边框效果.这是我用来实现的pgmagick代码:
border_background = Image(Geometry(220, 220), Color('transparent'))
drawer = Draw()
drawer.circle(110, 110, 33.75, 33.75)
drawer.fill_color(Color('white'))
drawer.stroke_antialias(False)
border_background.draw(drawer.drawer)
border_background.composite(original_thumbnail, 0, 0, CompositeOperator.OverCompositeOp)
Run Code Online (Sandbox Code Playgroud)
这"有效",但周围的白色边框相当扭曲,边缘不连贯 - 没有生产就绪.如果我拿出drawer.stroke_antialias(False),那就更糟了.
有关使用pgmagick使这个边框更平滑的任何想法?
所以我已经解决了这个问题几天,并且在我准备寻求帮助时明白了.
我正在尝试使用graphicsmagic包在基于node.js的应用程序中生成动画gif .
我已经生成了几张看起来像那样的幻灯片
var slides = [];
for (var i=0; i < 10; i++) {
var slide = gm(200, 200, '#000000')
.fill('#ffffff')
.drawText("Slide #"+ i);
slides.push(slide);
}
Run Code Online (Sandbox Code Playgroud)
我可以将它们转换为流或缓冲区,我可以将它们保存为硬盘上的单个文件,并且有点工作
但我的问题是如何在内存中完全从这些幻灯片中制作动画gif ,而不将各个文件保存在硬盘上?
我看到gm有类似的方法#delay()和#page()等在技术上我可以精心像这样的命令
convert -delay 200 -page slide1.gif -page slide2.gif output.gif
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何.我认为它看起来应该是那样的
var end_image = gm(200, 200, '#000000');
end_image.delay(500);
for (var i=0; i < slides.length; i++) {
slides[i].toBuffer(function(err, buffer) {
end_image.page(200, 200, ????);
});
}
end_image.write("output.gif");
Run Code Online (Sandbox Code Playgroud)
基本上我不知道如何将缓冲区转换为参数 gm
有没有人以前做过?也许有另一种方式?
PS:我也尝试使用这个 …
javascript imagemagick image-processing node.js graphicsmagick
我正在使用meteor(基于节点构建)和CollectionCFS(允许我使用gm [GraphicsMagick]进行缩略).
我执行以下操作以自动创建上传图像的缩略图:
new FS.Store.FileSystem("thumbs", {
transformWrite: function(fileObj, readStream, writeStream) {
gm(readStream, fileObj.name()).resize('100', '100').stream().pipe(writeStream);
},
path: "/Volumes/Public/Thumbs",
})
Run Code Online (Sandbox Code Playgroud)
transformWrite函数接收readStream(原始图像),修改它并将结果传递给writeStream.我怎么能创建PDF的缩略图?
在JS中我需要在节点模块gm(我想用imageMagick而不是默认的graphicsMagick)中传递这样的参数:
var gm = require('gm').subClass({ imageMagick: true });
Run Code Online (Sandbox Code Playgroud)
我怎样才能在ES6中做到这一点?
import gm from "gm";
gm.subClass({ imageMagick: true });
Run Code Online (Sandbox Code Playgroud)
不起作用,因为gm默认为未安装的GraphicsMagick.
我正在使用GraphicsMagick的node.js 模块.
在我的Node JS应用程序中,我需要为现有图像添加文本标签,例如:1)如果文本长于图像大小,则文本自动换行到下一行2)如果文本不能为适应图像,文本的字体大小会自动调整(缩小)以适合图像的框
GraphicsMagick的node.js模块提供的API是:
gm("img.png").drawText(x,y,text [,gravity])
但是,根据上述两个要求,这并没有提供任何选项来将文本放入框中.如果我单独使用此API,我将需要手动中断文本,并更改文本字体大小以适合图像,但即使如此,我还是需要首先能够测量文本大小.有没有办法做到这一点?
有什么建议?
为了便于说明,下面的图像显示了三个不同的文本字符串,需要适合相同大小的框.希望它澄清一下.
我想从imagemagick转到graphicsmagick
但我遇到了一些语法问题
首先我需要将一些图像合并到PDF中
convert -density 300 page_*.tif output.pdf
然后我需要创建 PDF 第一页的缩略图
convert -density 300 file.pdf[0] -background white -alpha remove -resize 140x140 -strip -quality 40 thumb.jpg[0]
这工作正常..但我想将第一个命令切换为graphicsmagick
这里的graphicsmagick语法工作得很好
gm convert -density 300 page_*.tif output.pdf
但是,当使用输出创建缩略图时,imagemagick其尺寸正确,但实际图像在图像本身内部缩小了?!
https://secure.dyndev.dk/data/voucher/30000/400/30435_eb7e5d0a9df71b2783e2fa89efd9de12fcdb9679.pdf
https://secure.dyndev.dk/data/voucher/30000/400/30433_7710d6404534b0868ab8da41dd651e971b70e16b.pdf
基于 imagemagick 的这个问题,graphicsmagick 的等价物是什么?使用 ImageMagick 创建 Windows ICO 文件的秘诀?
另外我只想生成一个具有多种尺寸的完全透明的 ico 文件。我发现有一个xc:none选项适用于两者,但是是否有一个命令可以生成具有多种大小的透明 ico 文件?否则我必须先创建一个透明的 png 文件,然后从该 png 文件创建 ico 文件。
graphicsmagick ×10
imagemagick ×6
node.js ×4
javascript ×2
pdf ×2
composite ×1
crop ×1
ecmascript-6 ×1
graphics ×1
import ×1
meteor ×1
pgmagick ×1
php ×1
python ×1
thumbnails ×1