我有一些图片网址,我想下载它们。但这些文件具有不同的后缀,例如.jpg、.png或.bmp。我还想把它们改成统一的格式,比如.JPEG. 所以我想使用curl命令将图像下载到内存缓存中,然后使用包convert中的命令ImageMagick将数据格式转换为.JPEG格式。有没有办法完成这项工作?
`curl http://aa.com/a.jpg`
`convert a.jpg 00001.JPEG`
`rm a.jpg`
`curl http://bb.com/b.png`
`convert b.png 00002.JPEG`
`rm b.png`
Run Code Online (Sandbox Code Playgroud)
我想简化这个过程,让临时文件保存到缓存中,然后不直接保存到磁盘中,这样可以减轻磁盘的负担。有没有办法利用pipeline技术来完成这项工作?例如
`curl http://aa.com/a.jpg | convert ... | ...`
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我正在使用 ImageMagick 通过使用下面的命令行选项来调整图像分辨率
convert abc.png -set units PixelsPerInch -density 75 abc_a.png
我需要这个:如果任何图像的宽度超过 300或高度超过 100,我想将其转换为宽度 300 宽度和 100 高度,并更改为高于 dpi(即 75dpi)。
谁可以帮我这个事?
我正在尝试允许用户通过 CMS 上传 SVG 图像并生成后备 PNG,以便当 CMS 在前端显示内容时,会为旧浏览器显示 PNG 后备。
问题是当我上传 SVG 时,PNG 输出有点偏离,渐变似乎丢失,如下面的屏幕截图所示。

在这些测试中,我只是使用 ImageMagick 命令行,如下所示,但已经使用 Imagick 通过 CMS 上传进行了尝试,结果相同。
convert gallardo.svg gallardo.png
Run Code Online (Sandbox Code Playgroud)
Imagick 版本按照其他线程的建议将背景设置为透明,但 PNG 输出与命令行相同。
class ResampleSvgUpload extends DataExtension {
function onAfterUpload() {
if($this->isSvg()){
$this->resample();
}
}
function onAfterWrite() {
if($this->isSvg()){
$this->resample();
}
}
function isSvg() {
$extension = strtolower($this->owner->getExtension());
return ($extension == 'svg') ? true : false;
}
function resample() {
$original = $this->owner->getFullPath();
$resampled = $original . '.png';
$imagick = new Imagick($original);
$imagick->setBackgroundColor(new …Run Code Online (Sandbox Code Playgroud) 我有一个具有完全透明背景和半透明白色前景的图标。我想让前景完全不透明,可以用 ImageMagick 实现吗?
我尝试过使用这些方法的不同组合;
http://www.imagemagick.org/discourse-server/viewtopic.php?t=12619
http://www.imagemagick.org/discourse-server/viewtopic.php?t=18196
http://www.imagemagick.org/discourse-server/viewtopic.php?t=16718
,但无法产生想要的结果。有小费吗?
convert az.png -alpha set temp.png
Run Code Online (Sandbox Code Playgroud)
生成的 temp.png 仍然没有 Alpha 通道。我究竟做错了什么?
我有两张图片:
a.jpgb.jpg两个图像都是正方形(100x100 像素)。我想从 image 中切出一个半径为 50 的圆a.jpg并将其粘贴到 image的中间b.jpg。我想将结果保存在c.jpg.
如何使用 Linux 命令行工具执行此操作?我需要在 shell 脚本中完成它。
在我的 rails 应用程序中,我让用户上传图像以用作他们制作的资源的缩略图。我使用 imagemagick 的 convert 命令进行所有图像处理:我转换为 jpg,将其转换为 800x600px,然后制作一些较小的缩略图版本。
这一切正常。问题是一些从我的 iPhone 上掉下来的图像,例如,有错误的方向。我的桌面似乎以不同的方式处理这个问题:当我在文件选择器对话框中看到图像的小缩略图时,它的方向错误,但是如果我在图像查看工具中打开它,它的方向是正确的。
大概有一些标题或元数据或图像文件中的某些内容告诉应用程序它需要旋转文件?我认为我需要在对图像进行任何其他处理之前阅读此内容,以便我可以在执行所有其他操作之前旋转图像(如有必要)。
谁能告诉我如何在 Ubuntu 服务器上的 bash 中做到这一点?
谢谢,马克斯
编辑:有点谷歌搜索表明这是与 EXIF 标头...
我需要将文件夹中的所有图像从 svg 转换为 png。假设图像被称为 test1.svg、test2.svg、...、testn.svg。使用以下脚本:
for i in *.svg
do
convert "$i" PNG24:"$i".png
done
Run Code Online (Sandbox Code Playgroud)
正确完成工作,图像被称为 test1.svg.png, test2.svg.png, ... , testn.svg.png。我的问题是:
1) 是否可以将输出图像命名为 test1.png, test2.png, ... , testn.png,实质上是从名称中删除“svg”部分?
2)是否可以将它们直接发送到其他目录?
谢谢!
我正在尝试使用图像魔法将整个文件夹转换为灰度。
convert *.jpg -colorspace Gray -separate -average
Run Code Online (Sandbox Code Playgroud)
遇到此错误:
convert: `-average' @ error/convert.c/ConvertImageCommand/3290.
Run Code Online (Sandbox Code Playgroud)
什么是正确的命令?
我正在尝试对图像执行多个操作(调整大小、裁剪、在底部添加一些空白区域)。
然后我试图在那个空白区域添加一个标题。
我想使用mogrify这样我可以编辑现有文件,而不是创建一个新文件(它将是大量的)。
这给了我一个错误,我不太确定如何做到这一点。不过它确实适用convert。
magick mogrify -resize 300x -crop 300x200+0+50 -extent 300x290 input.jpg -size 300x90 -gravity SouthWest -font "Arial" -pointsize 24 -fill black caption:'dis some really long shit that goes on 3 lines onmg how will it ever the' -composite -quality 100
Run Code Online (Sandbox Code Playgroud)