Как изменить размер изображения с помощью терминала?

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

convert myfigure.png myfigure.jpg

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

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

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/"{}"

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

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

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

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

sudo apt-get install nautilus-image-converter

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

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

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

Например:

imgp -x 1366x768 *

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

Сценарий №1

import os, sysimport Imagesize = 128, 128for 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 Imageimport sysfilename = sys.argv[1:]basewidth = 300img = 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, но технически это делается через терминал.