Изменить размер изображения до определенного соотношения, не увеличивая его - PullRequest
2 голосов
/ 18 декабря 2011

Мне нужно сгенерировать новые размеры изображения, чтобы они соответствовали соотношению заданной ширины и высоты ... но без увеличения размера оригинала.

Концепция кажется такой простой, но я не могу присоединиться к точкам.

Также для примеров кода используется язык PHP.

Обновление:

Это то, что я имею до сих пор: http://codepad.org/fTdCNhQf

Это вывод, который мне нужен:

Пример изображения & bull; (пока не может быть встроено)

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Поскольку увеличение не является опцией, вашими опциями являются только обрезка и расширение.

Попробуйте: допустим, ваше изображение W*H, а желаемое соотношение сторон ширины к высоте R.

  • Используя ширину и соотношение сторон, рассчитайте высоту цели TH = W/R
  • Используя высоту и соотношение сторон, рассчитайте ширину цели TW = H*R
  • Рассчитать изменения площади aH = ABS(TH-H)*W и aW = ABS(TW-W)*H
  • , если aH меньше aW, используйте ширину цели;добавьте или обрежьте изображение по горизонтали на основе знака TH-H
  • В противном случае используйте высоту цели;добавьте или обрежьте изображение по вертикали, взяв TW-W

Вот краткий пример:

Target R: 5/6
Image:  W=200, H= 300;
TH = 200/5*6 = 240
TW = 300*5/6 = 250
aH = 60*200=12000
aW = 50*300=15000

Результирующее действие: поскольку aH меньше aW, обрезать изображение по вертикали до 240

0 голосов
/ 18 декабря 2011

Используете ли вы что-то вроде библиотек ImageMagick для создания изображения, или вам просто нужно сгенерировать новые измерения на основе известного соотношения? Кроме того, вам нужно узнать соотношение из существующего изображения?

Это может быть полезно тогда: http://www.zedwood.com/article/119/php-resize-an-image-with-gd

...