Я использую imagemagick для изменения размера и обрезки изображения.
Тестовое изображение:
Мне нужно изменить размер его на 300 x 320 кадров для этого, сначала я изменяю размер изображения, а затем обрезаю его, и я использую следующие команды:
exec("convert /uploadImagePath -thumbnail 300 /newImagePath"); exec("convert /newImagePath -gravity Center -crop 290x310+0+0 /newImagePath");
Но это дает мне следующее изображение
Как вы видите, изображение не завершено … пожалуйста, помогите мне, где я ошибаюсь
Пытаться:
$inputFile = "WPTgp.jpg"; exec("convert {$inputFile} -resize 290x310^ -gravity Center -crop 290x310+0+0 picCropped.png");
надеюсь, это поможет
(Ответ обновлен, и теперь показан ниже пример -liquid-rescale
)
Размеры вашего оригинального изображения:
489 x 640 pixels
Ваши желаемые размеры выглядят так:
290 x 310 pixels
Это не может масштабироваться до этих размеров без:
Ваш результат показывает «1». (обрезка), что вам не нравится. Итак, у вас есть опции «2.» (удерживая ширину), '3.' (высота хранения), '4.' (искажение), '5.' (отступы) и «6.» (резьба по швам), оставленной для проверки.
convert WPTgp.jpg -resize x310 keep-height.jpg
Результирующее изображение имеет размеры 237 x 310 pixels
.
Keep Height....
(автоматически определите ширину)
convert WPTgp.jpg -resize 290x keep-width.jpg
Результирующее изображение имеет размеры 290 x 380 pixels
.
Keep Width.....
(автоматически определить высоту)
convert WPTgp.jpg -resize 290x310\! distorted.jpg
Результирующее изображение имеет размеры 290 x 310 pixels
.
Distorted......
(игнорировать соотношение сторон – исказить изображение, если требуется, чтобы соответствовать размерам)
convert WPTgp.jpg \ -resize 290x310 \ -gravity center \ -background orange \ -extent 290x310 \ padded.jpg
Результирующее изображение имеет размеры 290 x 310 pixels
. (Оранжевый фон был добавлен только для того, чтобы продемонстрировать, что «расширение» изображения работает.)
Padded.........
(сохранить пропорции – увеличить изображение для желаемых размеров)
convert WPTgp.jpg -liquid-rescale 290x310\! liquid.jpg
Выше была бы команда, которую вы спонтанно проистекаете из быстрого считывания ссылки параметров команды ImageMagick. Однако это не сработает, и вместо этого я использовал:
convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4% liquid.jpg
Далее ниже объясняется, почему мне нужно было его изменить ….
Liquid-rescaled
Извините – я не могу представить примерное изображение прямо сейчас; для этого требуется добавить дополнительную библиотеку Теперь у меня появилась возможность создать «жидкую масштабированную» версию исходного изображения. liblqr
(библиотека жидкостного масштабирования), которой у меня нет в данный момент).
'-liquid-rescale'
: Как указано выше, последнее изображение не является результатом моей первоначально предложенной команды, а одной из этих двух измененных версий:
convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4% liquid.jpg
Помните, что у нас есть оригинальное изображение размером 489×610 пикселей, которое, как ожидается, будет масштабироваться до 290×310 пикселей. Но -liquid-rescale
не подходит для масштабирования в двух измерениях одновременно – он предназначен для масштабирования только в одном направлении (горизонтальном или вертикальном). Если вы попытаетесь сделать оба сразу, результаты могут быть не такими, как вы ожидали. Вот результат для первоначально предложенной команды:
convert WPTgp.jpg -liquid-rescale 290x310\! liquid.jpg
LQR gone wrong
Вот почему я придумал две измененные команды, которые работают в два этапа: