Мне нужна помощь в обрезке изображения в PHP (GD) - PullRequest
1 голос
/ 27 мая 2010

http://i.imgur.com/foT9u.jpg

Используя это изображение в качестве примера, вот что мне нужно сделать:

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

Примечание: синий квадрат должен быть обрезан «от центра». Исходный центр должен оставаться центром после кадрирования (например, его нельзя обрезать слева вверху).

Вот что, я думаю, нужно сделать (используя, например, ландшафт, синий квадрат):

  • Выяснить разницу между шириной и высотой черных квадратов
  • Выяснить разницу между шириной и высотой синих квадратов
  • Это должно сказать мне, на сколько нужно обрезать синий квадрат и на сколько «верхнего смещения»
  • Как только он обрезается в соответствии с пропорциями черных квадратов, его можно изменить в размере

Я возился с кодом, похожим на:

if (BLACK_WIDTH > BLACK_HEIGHT)
{
   $diffHeight = BLACK_WIDTH - BLACK_HEIGHT;
   $newHeight  = $blue_Height - $blue_Height;

   echo $newHeight;
}

И с помощью Photoshop, чтобы попытаться понять, как это сделать, но он продолжает терпеть неудачу>. <</p>

Как мне это сделать? Как я могу выяснить, сколько нужно обрезать (в зависимости от того, является ли синий квадрат пейзажным или портретным)? Как мне получить смещение, чтобы сохранить центр синих квадратов?

РЕДАКТИРОВАТЬ: опечатка

1 Ответ

1 голос
/ 27 мая 2010
  • Найдите ширину черного квадрата, которую вы хотите обрезать. Пример желаемой ширины => $ x
  • Найдите отношение ($ r) синего квадрата. Таким образом, после изменения размера вы получите новую ширину => $ y
  • Создайте функцию, например, функцию deceaseSize, функция будет выполнять что-то вроде зацикливания, цикла, пока $ x == $ y

  • Извините, проигнорируйте мой ответ.

...