Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何使用ImageMagick对不同方向的图像进行大规模转换/调整大小?_Image Processing_Graphics_Imagemagick_Imagemagick Convert - Fatal编程技术网

Image processing 如何使用ImageMagick对不同方向的图像进行大规模转换/调整大小?

Image processing 如何使用ImageMagick对不同方向的图像进行大规模转换/调整大小?,image-processing,graphics,imagemagick,imagemagick-convert,Image Processing,Graphics,Imagemagick,Imagemagick Convert,我有一些包含垂直和水平图像的文件夹,我想将图像调整为更小的格式和更低的质量 其中一些具有以下格式: 宽度=3x,高度=2x,即3000x2000或1500x1000 宽度=2x,高度=3x,即2000x3000或1000x1500 如何表达用于convert的命令行,将其转换为两种较小的格式,质量较低,并调整大小: 宽度=900,高度=600 高度=600,高度=900 如何使此命令行仅适用于水平图像w>h convert*.jpg-调整900x600大小-质量80*.jpg 我不能使用这样的语

我有一些包含垂直和水平图像的文件夹,我想将图像调整为更小的格式和更低的质量

其中一些具有以下格式:

  • 宽度=3x,高度=2x,即3000x2000或1500x1000
  • 宽度=2x,高度=3x,即2000x3000或1000x1500
  • 如何表达用于
    convert
    的命令行,将其转换为两种较小的格式,质量较低,并调整大小:

  • 宽度=900,高度=600
  • 高度=600,高度=900
  • 如何使此命令行仅适用于水平图像
    w>h

    convert*.jpg-调整900x600大小-质量80*.jpg

    我不能使用这样的语法:

  • convert*.jpg-调整大小50%-质量80*.jpg
    -所有图像都可以有不同的宽度
  • 有几个选择

    选项1

    如果要根据方向将大小调整为1500x1000或1000x1500,可以使用
    @area count选项
    在resize命令中指定像素数,图片将保留比例。因此,无论方向如何,您总共需要1500000像素:

    mogrify -resize 1500000@ *.jpg
    
    选项2

    您可以使用类似这样的小脚本来确定每个图像是高(纵向)还是宽(横向),然后对每个图像执行您喜欢的任何处理:

    #!/bin/bash
    for f in *.jpg
    do
       read w h <<< $(convert "$f" -ping -format "%w %h" info: )
       if [ $w -gt $h ]; then
          echo "$f is $h tall and $w wide (landscape)"
       else
          echo "$f is $h tall and $w wide (portrait)"
       fi
    done
    

    它将运行所有JPEG并告诉您什么是什么。

    我发现我可以使用
    mogrify-path out-resize 900x900-quality 90%*.jpg
    立即将水平和垂直图像调整为900x600或600x900


    900x900并不意味着900宽和900高,而是将更大的图像缩放到极限。

    我发现我可以使用
    mogrify-path out-resize 900x900-quality 90%*。jpg
    将水平和垂直图像的大小调整为900x600或600x900。
    chmod +x go
    ./go