Как изменить размер изображения через терминал?

Как изменить размер изображения через терминал?

У меня Ubuntu 10.04. Я конвертировал образ через терминал с помощью следующей команды:

convert myfigure.png myfigure.jpg

Но я хочу изменить высоту и ширину преобразованного изображения. Есть ли способ это сделать?

решение1

Та же команда, но с дополнительной опцией:

convert myfigure.png -resize 200x100 myfigure.jpg

или

convert -resize 50% myfigure.png myfigure.jpg

Чтобы изменить размер нескольких файлов, вы можете попробовать следующую команду (как предложено@test30)

find . -maxdepth 1 -iname "*.jpg" | xargs -L1 -I{} convert -resize 30% "{}" _resized/"{}"

решение2

Если вам нужен только CLI:

sudo apt-get install imagemagick
mogrify -resize 320x240 Image.png 
mogrify -resize 50% Image.png
mogrify -resize 320x240 *.jpg

Если вы хотите попробовать графический интерфейс:

Установитьnautilus-image-converter

sudo apt-get install nautilus-image-converter

Он добавляет два пункта контекстного меню в Naulius, так что вы можете щелкнуть правой кнопкой мыши и выбрать «Изменить размер изображения» (другой — «Повернуть изображение»).

При желании вы можете создать целый каталог изображений за один раз, и для этого вам даже не придется открывать приложение.

решение3

имгпотносительно новая утилита, которая делает изменение размера и поворот изображения. Имеет больше функций, чем nautilus-image-converter.

Например:

imgp -x 1366x768 *

решение4

Поскольку Ubuntu поставляется с Python, вы также можете использовать скрипт Python, чтобы добиться этого, имея немного больше контроля над происходящим — см.этот stackoverflowвопрос для примера скриптов. Эти примеры используют только стандартную библиотеку.

Сценарий №1

import os, sys
import Image

size = 128, 128

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"
    if infile != outfile:
        try:
            im = Image.open(infile)
            im.thumbnail(size, Image.ANTIALIAS)
            im.save(outfile, "JPEG")
        except IOError:
            print "cannot create thumbnail for '%s'" % infile

И еще один пример, где вам нужно указать только ширину (как переменную width):

Сценарий №2

from PIL import Image
import sys

filename = sys.argv[1:]
basewidth = 300
img = Image.open(filename)
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.ANTIALIAS)
img.save(filename) 

Теперь, как это сделать через терминал...

sudo nano resizescript.py

Вставьте один из этих блоков кода в текстовый редактор. Нажмите Ctrl+x, чтобы выйти (скажите «да», чтобы сохранить изменения).

Чтобы использовать сценарий №1:

python resizescript.py yourfilenamehere.jpg

Чтобы использовать сценарий №2:

python resizescript.py yourfilenamehere.jpg

Вы должны находиться в том же каталоге, что и файлы изображений для обоих этих скриптов. Первый скрипт сжимает изображение до 128x128 пикселей. Второй скрипт делает его шириной 300 пикселей и вычисляет пропорциональную высоту. Это больше похоже на ответ Python, но технически это делается через терминал.

Связанный контент