我想 ffmpeg 是首选的武器,但我没有找到如何达到我的目标。
我想做的很简单。我有一个file.png,我想镜像它,即结果应该是原始图像的“反射”。
我知道像 GIMP 和 InkScape 这样的大工具可以做到这一点,但我希望有一个命令行实用程序,比如convert(遗憾的是它似乎没有这样的选项,或者至少man页面中没有提到它)。
根据这个问题,如何在 linux 上从命令行将一系列图像转换为 PDF?, ImageMagick 可以将多个图像转换为单个 PDF。
如何反转操作并将多页的 PDF 转换为多张图像?
我尝试了以下命令,但显示错误:
$ convert test.pdf test-%02.png
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert-im6.q16: no images defined `test-%02.png' @ error/convert.c/ConvertImageCommand/3258.
Run Code Online (Sandbox Code Playgroud)
gs 已安装:
$ gs --version
9.26
Run Code Online (Sandbox Code Playgroud)
Ubuntu 版本:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 19.04
Release: 19.04
Codename: disco
Run Code Online (Sandbox Code Playgroud) convert -size 300x50 xc:none -font Arial -pointsize 20 -gravity center -draw "fill white text 1,1 \"$1\" text 0,0 \"$1\" fill black text -1,-1 \"$1\"" $WATERMARK_FILE
Run Code Online (Sandbox Code Playgroud)
以上命令导致以下错误:
convert.im6: unable to read font `Arial' @ warning/annotate.c/RenderType/853.
Run Code Online (Sandbox Code Playgroud)
我在网上搜索,发现很多用户看到了这个错误,但没有找到任何解决方案。任何人都可以帮忙吗?
注 1:我的系统上安装了 Arial 字体:
$ fc-list | grep -i arial
/usr/share/fonts/truetype/msttcorefonts/Arial_Italic.ttf: Arial:style=Italic,Cursiva,kurzíva,kursiv,??????,Kursivoitu,Italique,D?lt,Corsivo,Cursief,Kursywa,Itálico,??????,?talik,Poševno,nghiêng,Etzana
/usr/share/fonts/truetype/msttcorefonts/ariblk.ttf: Arial Black:style=Regular,Normal,oby?ejné,Standard,????????,Normaali,Normál,Normale,Standaard,Normalny,???????,Normálne,Navadno,Arrunta
/usr/share/fonts/truetype/msttcorefonts/Arial.ttf: Arial:style=Regular,Normal,oby?ejné,Standard,????????,Normaali,Normál,Normale,Standaard,Normalny,???????,Normálne,Navadno,th???ng,Arrunta
/usr/share/fonts/truetype/msttcorefonts/arialbd.ttf: Arial:style=Bold,Negreta,tu?né,fed,Fett,??????,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,??????????,Fet,Kal?n,Krepko,?â?m,Lodia
/usr/share/fonts/truetype/msttcorefonts/Arial_Bold_Italic.ttf: Arial:style=Bold Italic,Negreta cursiva,tu?né kurzíva,fed kursiv,Fett Kursiv,?????? ??????,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér d?lt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,?????????? ??????,Tu?ná kurzíva,Fet Kursiv,Kal?n ?talik,Krepko poševno,nghiêng ?â?m,Lodi etzana
/usr/share/fonts/truetype/msttcorefonts/arialbi.ttf: …Run Code Online (Sandbox Code Playgroud) 我想将图像(jpg、png 等)批量转换为 PDF。将它们直接转换为 PDF 很容易:
convert in.jpg out.pdf
Run Code Online (Sandbox Code Playgroud)
但是我需要更多选项,例如设置输出页面大小、边距以及横向和纵向格式之间的旋转。经过一些试验和错误,我想出了:
convert -rotate "90>" -page A4+0+0 -gravity center in.jpg out.pdf
Run Code Online (Sandbox Code Playgroud)
这使图像在 A4 页面上居中并自动在横向和纵向之间旋转,但它仅适用于 595x842 以下的小图像。较大的图像会中断,因为 595x842 似乎是分配给 A4 页面的像素分辨率。在网上阅读,-density选项可能是增加 A4 页面像素数的潜在解决方案,但我无法使其工作。
Imagemagick 之外的解决方案当然也受欢迎。
我从朋友那里收到了一组动画 GIF 图像,但我无法使用标准图像查看器打开其中的一些图像eog。
尝试打开它们时显示的错误消息包括:
GIF 图像加载器无法理解此图像
GIF 文件中的圆表条目
堆栈溢出
但是,图像没有损坏,因为我可以使用 Firefox 打开它们而不会出现问题,也可以使用 ImageMagick 查看器打开它们,尽管它不会自动播放动画。
检查 GIF 并file返回以下输出,包括我可以打开和无法打开的图像(尽管大小不同):
GIF image data, version 89a, 400 x 300
Run Code Online (Sandbox Code Playgroud)
我希望能够在eog. 我能否以某种方式“修复”“损坏”的图像,使它们对标准图像查看器可读,例如通过使用 ImageMagick 的转换能力将它们转换成其他东西然后再返回?
我正在使用以下 libreoffice 命令将我的pdf 文件转换为 word(doc)
lowriter --headless --infilter='writer_pdf_import' --convert-to doc:"MS Word 2007 XML" sample.pdf
Run Code Online (Sandbox Code Playgroud)
转换输出文档后,每行都带有一个矩形框。但是,如果我在MS Word 97 中使用相同的命令,它就可以完美运行。
lowriter --headless --infilter='writer_pdf_import' --convert-to doc:"MS Word 97" sample.pdf
Run Code Online (Sandbox Code Playgroud)
我不知道第一个命令中的错误是什么。请帮我解决一下这个。并建议我是否需要添加任何其他属性来提高转换的效率和质量。
我在一个目录中有 3 个文件:
aaa.jpg
bbb.jpg
ccc.jpg
Run Code Online (Sandbox Code Playgroud)
我可以使用 ImagkMagick convert 缩小图像:
convert aaa.jpg -resize 1200x900 aaa-small.jpg
Run Code Online (Sandbox Code Playgroud)
我想做目录中的所有图像,例如:
convert *.jpg -resize 1200x900 *-small.jpg
Run Code Online (Sandbox Code Playgroud)
但这会导致文件命名如下:
*-small-0.jpg
*-small-1.jpg
*-small-2.jpg
Run Code Online (Sandbox Code Playgroud)
我想要的是:
aaa-small.jpg
bbb-small.jpg
ccc-small.jpg
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
这是我的第一篇文章,所以如果我犯了一些格式错误,我希望你能原谅我。这是我已经有很长一段时间的一个问题,在寻找答案时,我出现了更多问题。我试图找到一种方法来使用convert一个命令压缩文件夹中的图片。
首先,我只是尝试:
convert * -resize 50% Pic.jpg
Run Code Online (Sandbox Code Playgroud)
然而,这返回了名为 Pic-0.jpg、Pic-1.jpg 等的压缩图片(我也尝试过$(find ".JPG")而不是,*但将其扩展为相同的。为了获得我想要的格式,我尝试了:
convert * -resize 50% Pic_lorez_{1..3}.jpg
Run Code Online (Sandbox Code Playgroud)
但这似乎将 Pic_lorez_2.jpg 和 Pic3_lorez_3.jpg 作为输入文件,而不是输出文件。所以听从了朋友的建议,我尝试了:
find . -name "*.JPG" -exec convert {} -resize 50% {} \;
Run Code Online (Sandbox Code Playgroud)
这会压缩同名下的所有文件,但不允许将我想要的名称放在这些文件中(例如,Pic_lorez_{1,2,3,4,5,..100}.jpg)。
xargs 会让它成为可能吗?类似的东西:
find . -name "*.JPG" | xargs convert ???
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚 xargs 的正确语法。我终于尝试了将 find 的直接管道转换为 convert 但 convert 似乎无法以这种方式工作。
转换后,新文件的大小更大。??
这是为什么?
andy@7 ~/Downloads> convert Screenshot_1360x768.png -resize 1024x578! smaller.png
andy@7 ~/Downloads> ls
-rw-rw-r-- 1 andy andy 135725 Sep 7 19:45 Screenshot_1360x768.png
-rw-rw-r-- 1 andy andy 154448 Sep 7 20:17 smaller.png
Run Code Online (Sandbox Code Playgroud) convert-command ×10
command-line ×4
imagemagick ×4
gif ×2
pdf ×2
14.04 ×1
19.04 ×1
eog ×1
ffmpeg ×1
file-format ×1
find ×1
fonts ×1
libreoffice ×1
ubuntu-mate ×1
webm ×1