Сохранение соотношения сторон в изображении :: Функция миниатюр Magick - PullRequest
2 голосов
/ 29 марта 2020

Я пытаюсь использовать библиотеку Perl Image :: Magick для использования функции миниатюр ImageMagick. Все, что я прочитал, говорит о том, что ImageMagick сохраняет соотношение сторон, когда ему задаются ширина и высота, почти функционируя как max-width и max-height на языке CSS. Тем не менее, на практике кажется, что изображение затирается в размеры, которые я даю, независимо от соотношения сторон. Я пропускаю флаг, который мне нужно включить? У меня сложилось впечатление, что сохранение соотношения сторон является поведением по умолчанию.

    my $image = Image::Magick->new;
    $image->BlobToImage($imageData);
    $image->SetAttribute(quality => 80);
    $image->SetAttribute(compression => 'JPEG');
    $image->Thumbnail(width => $thumbnailWidth, height => $thumbnailHeight);

1 Ответ

3 голосов
/ 29 марта 2020

Есть опции для всесторонней манипуляции с размером в geometry параметре

scale%         Height and width both scaled by specified percentage.
...
width          Width given, height automagically selected to preserve aspect ratio.
...
widthxheight   Maximum values of height and width given, aspect ratio preserved.
widthxheight^  Minimum values of width and height given, aspect ratio preserved.
widthxheight!  Width and height emphatically given, original aspect ratio ignored.
...

Это из раздела Геометрия изображения страницы в команде ImageMagick '* -линейное использование . Тот факт, что Perl документация модуля не дает такого уровня детализации API, обычно подразумевает, что его привязка реализует большинство (все?) Из них, и покрыта обобщенной c документацией.

Пример командной строки, масштабирование изображения до 20%

perl -MImage::Magick -we'$f = shift // die "Pass image filename\n"; 
    $img = Image::Magick->new; 
    $img->Read($f);
    $img->Thumbnail(geometry => "20%"); 
    $img->Write(filename => "scaled_$f")'

Судя по примеру в вопросе, похоже, что вам нужно значение параметра

widthxheight  Maximum values of height and width given, aspect ratio preserved.

Более общие методы c Resize и Scale также имеют параметр geometry.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...