Как изменить размер изображения - PullRequest
0 голосов
/ 30 августа 2011

Как уменьшить размеры изображений в Linux. Я использовал ImageMagick для этого. Но это не работает хорошо для изображений GIF. Я использовал это как:

Чтобы изменить размер изображения

exec("convert $original -resize " . $width . 'x' . $height . ' ' . $destination);

Чтобы уменьшить размер изображения

exec("convert $original -quality 80% $new_img");

Пожалуйста, дайте мне знать, если у вас есть способ уменьшить размер изображения. Этот код хорошо работает для JPG, но не работает для изображений GIF.

Ценю вашу помощь.

Ответы [ 4 ]

1 голос
/ 30 августа 2011

Цитирование из руководства Imagemagick:

-quality value 
JPEG/MIFF/PNG compression level.

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

Для GIF самый простой вариант - использовать команду -colors, чтобы уменьшить количество цветов, используемых в вашем изображении.Качество результата во многом зависит от того, что содержит ваше исходное изображение. Я видел случаи, когда уменьшение с 256 до 16 цветов не приводило к значительной потере качества, и другие случаи, когда уменьшение до 128 цветов делало изображение непригодным для использования.Вам придется поэкспериментировать.

Последнее замечание: вы можете преобразовать свой GIF в формат PNG и использовать команду -quality на полученном изображении.Однако качество PNG немного неправильное:

Для форматов изображений MNG и PNG значение качества устанавливает уровень сжатия zlib (качество / 10) и тип фильтра (качество% 10).,«Качество» PNG по умолчанию равно 75, что означает уровень сжатия 7 с адаптивной фильтрацией PNG, если только изображение не имеет цветовой карты, в этом случае это означает уровень сжатия 7 без фильтрации PNG.

Такне удивляйтесь, если уменьшение размера в PNG меньше, чем в JPG ', это только улучшает сжатие PNG-изображения без потерь.

0 голосов
/ 25 августа 2016

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

convert input-file -density 300 -quality 50% output-file
0 голосов
/ 30 августа 2011

Так что вы можете использовать GD http://ua.php.net/manual/en/function.imagecopyresampled.php <</p>

?php
// The file
$filename = 'test.jpg';

// Set a maximum height and width
$width = 200;
$height = 200;

// Content type
header('Content-Type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
?>
0 голосов
/ 30 августа 2011

Чтобы уменьшить размер GIF-изображений, вы можете попробовать преобразовать их в PNG или уменьшить глубину цвета. Глубина цвета - это количество цветов, используемых на изображении. Меньшее количество цветов означает меньший размер изображения.

...