LinuxForum.Fans
Тема

Как сжать картинки ?

Автор: Rassol2 24 сообщений 5028 просмотров
#278493

Вот появилась задача, нужно 2.5гб картинок сжать до 120х120 тока даже не знаю софт который в линуксе это делает :(
посоветуйте что то, было бы идеально что бы массово все жахнуло по размеру а то боюсь постареть если редактировать по 1 фотке.

#278501

спс будем разбираться.

#278502
Rassol2 написал:
Вот появилась задача, нужно 2.5гб картинок сжать до 120х120 тока даже не знаю софт который в линуксе это делает :(
посоветуйте что то, было бы идеально что бы массово все жахнуло по размеру а то боюсь постареть если редактировать по 1 фотке.

Вы сказали общий вес файлов и сказали размер в пикселях каждой картинки. Скажите скорее, какое отношение одно имеет к другому?

Какие картинки какого размера и разрешения, какого типа компрессии или без неё во что Вы хотите сжать?

Изменение веса картинки - это одно (измеряется в байтах), изменение размера (измеряется в пикселях) - другое, изменение разрешения (что-то на что-то, например на дюйм) вовсе третье. Вопрос в том виде, в котором Вы его задали, просто не имеет смысла.

#278506
"karl_muenhgausen" написал:
Вы сказали общий вес файлов и сказали размер в пикселях каждой картинки. Скажите скорее, какое отношение одно имеет к другому?

Вероятно, ТС подразумевал, что картинок много.

#278507
Vitri написал:
[quote="karl_muenhgausen"]Вы сказали общий вес файлов и сказали размер в пикселях каждой картинки. Скажите скорее, какое отношение одно имеет к другому?

Вероятно, ТС подразумевал, что картинок много.[/quote]

С такой же вероятностью можно предполагать, что они имеют разный размер, разрешение и оптимизацию (компрессию) либо индексированную палитру, если она есть. Как-то, пока не получилось получить от ТС эту информацию...

Тем более, почти уверен, что к Линуксу как таковому, и его ПО это всё не имеет и малейшего отношения, а носит характер кроссплатформенной проблемы каких-то конкретных форматов изображений.

#278521

А у меня есть скриптик, который изменяет разрешение картинок, задействуя многопроцессорность :)
Естественно через convert это делается.

#278553
Vascom написал:
А у меня есть скриптик, который изменяет разрешение картинок, задействуя многопроцессорность :)
Естественно через convert это делается.

Разрешение или размер? Каких именно картинок? GIF, JPG, PNG?

#278560

Разрешение меняет. В данном случае JPG, но лишь потому, что у меня там ещё RAW могли лежать, а так convert'у всё равно какой формат.
Конечно же скрипт надо переделать под конкретные нужды.

text
#!/bin/bash

#This script resize big images for my Android device

INPUT_FORMAT=JPG

if [ -z "$1" -o -z "$2" ] then echo "repn: Format isn't correct!" echo "repn: Use conv_andr path_to_photos/ format number_of_threads" echo "where format - 480x320 or scaled" echo "Converted images will stored in path_to_photos/converted" echo "If number_of_threads not entered then using all system processors" exit fi

if [ ! -e $1converted ] then mkdir $1converted fi

if [[ -z "$3" || $3 == 0 ]] then THREADS=`cat /proc/cpuinfo | grep -c processor` else THREADS=$3 fi echo "Using $THREADS processors"

echo "convert -resize $2 "$1\$@" "$1converted/\$@"" > /tmp/conv_andr_tmp ls -1 $1 | grep -i $INPUT_FORMAT | xargs -L1 -P$THREADS bash /tmp/conv_andr_tmp rm -f /tmp/conv_andr_tmp

#278561
Vascom написал:
Разрешение меняет. В данном случае JPG, но лишь потому, что у меня там ещё RAW могли лежать, а так convert'у всё равно какой формат.

Меняет не разрешение (точек на площадь при печати) и не вес (файл в байтах), этого convert не умеет, а размер (количество точек).

Что же именно нужно ТС (очевидно вес) пока осталось непонятным.

#278563
karl_muenhgausen написал:
[quote=Vascom]Разрешение меняет. В данном случае JPG, но лишь потому, что у меня там ещё RAW могли лежать, а так convert'у всё равно какой формат.

Меняет не разрешение и не вес (этого convert не умеет), а размер.[/quote]
Согласен, размер.

Хотя и вес convert должен уметь менять, например через увеличение сжатия JPEG или через изменение формата.

#278566
Vascom написал:
Хотя и вес convert должен уметь менять, например через увеличение сжатия JPEG или через изменение формата.

А также дорисовывать фон при удалении фигуры? *ROFL*

Менять вес - задача исключительно ручная. Никакая программулина не знает, что именно нужно изменить и как. Даже в пределах jpeg есть масса разных типов преобразований. А уж про gif или png и говорить нечего. Реально можно сделать только одно: один тип компрессии, один вид преобразования. Например jpeg бикубический. А вот уж править индексированную палитру, скажем, в gif - увольте.

Так что, Вы заблуждаетесь.

Вообще convert, как и imagemagick в целом, довольно тупая и опасная штука. Лучше каждую картинку открыть в чём-то вменяемом, скажем, GIMP и руками преобразовать так, как нужно. Или же писать большой и нудный скрипт, если точно знаешь как и во что.

#278690

Вы сказали общий вес файлов и сказали размер в пикселях каждой картинки. Скажите скорее, какое отношение одно имеет к другому?
Какие картинки какого размера и разрешения, какого типа компрессии или без неё во что Вы хотите сжать?
Изменение веса картинки - это одно (измеряется в байтах), изменение размера (измеряется в пикселях) - другое, изменение разрешения (что-то на что-то, например на дюйм) вовсе третье. Вопрос в том виде, в котором Вы его задали, просто не имеет смысла.

если я скажу что их сто и 1500 х 1500 или скажу что их 50 и размер 1200х1200 способы будут разные ?

Тем более, почти уверен, что к Линуксу как таковому, и его ПО это всё не имеет и малейшего отношения, а носит характер кроссплатформенной проблемы каких-то конкретных форматов изображений.

имеет так как я не собираюсь ставить другую ОС для решение этой проблемы посему ищу решение именно в линуксе.

Что же именно нужно ТС (очевидно вес) пока осталось непонятным.

сжать до 120х120

я не думаю что вы подразумевали под моими словами сжатие до 120мегабайт на 120мегабайт :D ведь глупо )))

Лучше каждую картинку открыть в чём-то вменяемом, скажем, GIMP и руками преобразовать так, как нужно

У меня их 2.5 гб
по штукам 7772
посему и задал вопрос, решение для

было бы идеально что бы массово все жахнуло по размеру

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

#278694

сейчас буду работать с

text
convert -resize 120x120 Image.jpg mini_image.jpg

Тока вот название не нужно менять посему читаю ман. Как его окуратненько завернуть что бы все фото изменило размер и новые картинки поместить в одельную директорию.

А вообще это нужно для интернет магазина, там много позиций и хочу через фтп залить фото а они принимаются только в таком размере, если залить больше то они не выводятся на сайте. А если заливать через сам сайт то они сами жмутся, но заливать 7к по 1 это убого и долго.

#278715
"Rassol2" написал:
Тока вот название не нужно менять посему читаю ман. Как его окуратненько завернуть что бы все фото изменило размер и новые картинки поместить в одельную директорию.

это средствами баша решается... ну или find'ом
find . -type f -maxdepth 1 -exec convert -resize 120x120 '{}' /path/to/dir/with/mini/images/'{}' ';'
как-то так...

"Rassol2" написал:
А вообще это нужно для интернет магазина, там много позиций и хочу через фтп залить фото а они принимаются только в таком размере, если залить больше то они не выводятся на сайте. А если заливать через сам сайт то они сами жмутся, но заливать 7к по 1 это убого и долго.

можно curl'ом при желании, но там читать ещё больше...

#278722
Rassol2 написал:
Тока вот название не нужно менять посему читаю ман. Как его окуратненько завернуть что бы все фото изменило размер и новые картинки поместить в одельную директорию.

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

#278816

ага тока я несильно шарю как его менять :(
так сказать много букв

#278818

у меня получилось что то вот такое

text
find ./ -maxdepth 1 -type f -exec convert -resize 120x120 '{}' /home/rassol2/1/ {} \;

тока процесс повис уже 30 минут выжирает дето 70% процессора и не известно что делает ))) наверное стоило сперва тесты провести с меньшим количеством )))

#278820

find ./ -maxdepth 1 -type f -exec convert -resize 120x120 '{}' /home/rassol2/1/Пробела быть не должно{} \;

Войдите или зарегистрируйтесь, чтобы ответить.