Я пытаюсь создать миниатюру и изменить размер изображения одновременно, поэтому, чтобы быть более ясным, вот изображение, которое я пытаюсь обрезать:
И я хотел бы вырезать эту красную область.
Теперь моя проблема в том, что я изменяю размер изображения с помощью html перед кадрированием, поэтому, когда я отправляю данные в php, я получаю неверные значения, например y = 100
, когда действительно это может быть y = 200
, поэтому мне нужно найти способ рассчитать мои значения.
Я использую imagecopyresampled
, может быть, есть что-то лучше этой команды?
Также мое самое близкое решение было таким:
imagecopyresampled(
$thumb, //Destination image link resource.
$src, //Source image link resource.
0, //x-coordinate of destination point.
0, //y-coordinate of destination point.
0, //x-coordinate of source point.
0, //y-coordinate of source point.
120, //Destination width.
160, //Destination height.
$image_width/2, //Source width.
$image_height/2 //Source height.
);
В этом случае он будет вырезать левый угол, но размер будет не таким, как у моей красной коробки.
Так что я думаю, мне нужно правильно настроить source width
и source height
, а все остальное должно идеально подходить, в любом случае, я надеюсь, что здесь есть какой-то смысл:)
РЕДАКТИРОВАТЬ Извините, я забыл упомянуть, $image_width
и $image_height
- исходный размер изображения
РЕДАКТИРОВАТЬ 2 Чтобы быть более понятным, это то, что я получаю, когда я изменяю размер с этим кодом
$dimensions = getimagesize('testas.jpg');
$img = imagecreatetruecolor(120, 160);
$src = imagecreatefromjpeg('testas.jpg');
imagecopyresampled($img, $src, 0, 0, 0, 0, 120, 160, $dimensions[0]/2, $dimensions[1]/2);
imagejpeg($img, 'test.jpg');
Размер измененного размера правильный, но, как вы можете, он выглядит неправильно.