- Автор темы
- #1
Делаю обрезку изображения по заданным размерам. По краям появляются черные полосы.
Причем пара нюансов:
1. появляется только на хостинге. На локалке нет, поэтому выловить не могу - проблемы для пользователей не хочу создавать различными дебагами и т.п.
2. полосы либо сверху и снизу, либо справа и слева. От чего зависит не знаю. Но симметрично.
Полосы черные, тонкие.
Выкладываю код с уже подстановленными размерами (что приходит из js
Пробовал вверху добавлять:
Не помогло.
Причем пара нюансов:
1. появляется только на хостинге. На локалке нет, поэтому выловить не могу - проблемы для пользователей не хочу создавать различными дебагами и т.п.
2. полосы либо сверху и снизу, либо справа и слева. От чего зависит не знаю. Но симметрично.
Полосы черные, тонкие.
Выкладываю код с уже подстановленными размерами (что приходит из js
PHP:
// resize the original image to size of editor
$resizedImage = imagecreatetruecolor(900, 490);
imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, 900, 490, 900, 490);
// rotate the rezized image
$rotated_image = imagerotate($resizedImage, -0, 0);
// find new width & height of rotated image
$rotated_width = imagesx($rotated_image);
$rotated_height = imagesy($rotated_image);
// diff between rotated & original sizes
$dx = $rotated_width - 900;
$dy = $rotated_height - 490;
// crop rotated image to fit into original rezized rectangle
$cropped_rotated_image = imagecreatetruecolor(900, 490);
imagecolortransparent($cropped_rotated_image, imagecolorallocate($cropped_rotated_image, 0, 0, 0));
imagecopyresampled($cropped_rotated_image, $rotated_image, 0, 0, $dx / 2, $dy / 2, 900, 490, 900, 490);
// crop image into selected area
$final_image = imagecreatetruecolor(653, 490);
imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0));
imagecopyresampled($final_image, $cropped_rotated_image, 0, 0, 123, 0, 653, 490, 653, 490);
// finally output png image
imagejpeg( $final_image, ROOT_DIR .'/'. $this->path .'crop_'. $this->base_img_name, $config['img_obj_quality'] );
Пробовал вверху добавлять:
PHP:
imagecolortransparent($resizedImage, imagecolorallocate($resizedImage, 0, 0, 0));