Я настроил jCrop, чтобы пользователи на моем сайте могли обрезать и сохранять (скачивать) изображения. Сейчас я близок к концу, но врезался в стену. У меня настроен код (см. Ниже), и когда я закомментирую header()
В строке все работает, как задумано, обрезанное изображение сохраняется на сервере, и я могу загрузить его оттуда.
Проблема в том, что, когда я включаю заголовок и возвращаем сломанное изображение, я действительно не уверен, почему. Если бы кто-нибудь мог помочь, я был бы очень признателен
<?php
//$_POST['src'] = http://example.com/example.jpg
$image_url = $_POST['src'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $image_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
$targ_w = $_POST['w']; $targ_h = $_POST['h'];
$image = imagecreatefromstring( $data );
$dst_r = imagecreatetruecolor( $targ_w, $targ_h );
if ( !$image )
exit( 'No valid image' );
$path = '/home/hostname/public_html/'.time().'-image.jpg';
imagecopyresampled( $dst_r, $image, 0, 0, $_POST['x'], $_POST['y'], $targ_w, $targ_h, $_POST['w'], $_POST['h'] );
//header( 'Content-Type: image/jpeg' );
imagejpeg( $dst_r, $path, 100 );
imagedestroy( $dst_r );
//unlink( $path );
exit;
?>
В настоящее время, поскольку код стоит, изображение сохраняется в корне сайта. Если я раскомментирую unlink()
изображение удаляется из каталога (который предназначен). Если я раскомментирую header()
затем возвращается страница, содержащая разорванное изображение с src, соответствующим URL страницы.
Спасибо.
подобно документация указывает, что второй аргумент imagejpeg
должно быть NULL
если вы хотите вывести изображение напрямую.
Попробуйте изменить imagejpeg( $dst_r, $path, 100 );
в imagejpeg( $dst_r, NULL, 100 );
,
Изменить: это также избавляет вас от использования unlink
, поскольку файл не создается.
Других решений пока нет …