killer8080
27.12.2012 - 00:04
Alex149149
покажи весь код целиком, как используешь.
Alex149149
27.12.2012 - 09:59
так и использую
<?php
header('Content-Type: image/jpeg');
$src = imagecreatefromjpeg('image.jpeg');
$dest = imagecreatetruecolor(314, 399);
imagecopy($dest, $src, 0, 0, 0, 0, 314, 399);
imagejpeg($dest);
imagedestroy($dest);
imagedestroy($src);
?>
killer8080
27.12.2012 - 11:43
Alex149149попробуй не выводить картинку в поток, а сохранить в виде файла.
imagejpeg($dest, 'pic.jpg');
то же обрежет?
Alex149149
27.12.2012 - 21:48
нет, сохранило полностью, без обрезаний
killer8080
28.12.2012 - 02:07
Цитата (Alex149149 @ 27.12.2012 - 19:48) |
нет, сохранило полностью, без обрезаний |
Это точно весь код? Похоже криво формируется http заголовок Content-Length
Посмотри фаирбагом, что там в заголовках передается.
Alex149149
28.12.2012 - 11:11
http заголовок вообще не выведен. если я правильно понял он должен выглядеть примерно так
<meta content="image/jpeg">
просмотр страницы через Firebug:
<html>
<head>
<style>
img { display: block; }
</style>
<title>script.php (изображение «JPEG», 314x399 пикселов)</title>
</head>
<body>
<img src="http://sait.ru/script.php" alt="http://sait.ru/script.php">
</body>
</html>
killer8080
28.12.2012 - 11:30
Цитата (Alex149149 @ 28.12.2012 - 09:11) |
http заголовок вообще не выведен. если я правильно понял он должен выглядеть примерно так
<meta content="image/jpeg"> |
нет, он должен выглядеть примерно так
HTTP/1.1 200 OK
Server: nginx/1.0.12
Date: Fri, 28 Dec 2012 07:20:18 GMT
Content-Type: image/gif
Connection: keep-alive
Last-Modified: Fri, 14 Sep 2012 18:40:01 GMT
ETag: "33aeecc-9db-50537a01"
Accept-Ranges: bytes
Content-Length: 2523
я имею ввиду заголовки именно в ответе на запрос картинки вида
http://site.ru/image.jpgкстати, если это не локалхост, для просмотра заголовков можешь воспользоваться сервисом
http://www.bertal.ru, просто вставь урл картинки в поле.
Alex149149
28.12.2012 - 11:50
Cервис
http://www.bertal.ruHTTP/1.1 200 OK
Date: Fri, 28 Dec 2012 08:47:03 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Powered-By: PHP/5.2.6
Transfer-Encoding: chunked
Content-Type: image/jpeg
killer8080
28.12.2012 - 12:21
попробуй в начале добавить
ob_start('ob_handler');
function ob_handler($buffer){
header('Content-Length: ' . strlen($buffer));
return $buffer;
}
Alex149149
28.12.2012 - 12:34
killer8080, Огромнейшее спасибо Вам! Все теперь корректно выводится.
Если не сложно, можите рассказать в чем была загвозда и пояснить код. Буду премного благодарен! Самое интересное, что все до этого работало и ничего не менялось в настройках сервера. Ваши предположения почему это случилось.
killer8080
28.12.2012 - 12:43
Цитата (Alex149149 @ 28.12.2012 - 10:34) |
Если не сложно, можите рассказать в чем была загвозда и пояснить код. |
В ответном заголовке сервера отсутствовало указание размера контента, в такой ситуации браузер будет читать контент из потока пока открыто соединение. Откуда взялось ограничение в 8К мне самому не понятно. Попробуй в разных браузерах его по открывать, возможно баг конкретно этой версии браузера. По коду. Мы просто включаем буферизацию контента, и назначаем обработчик буфера. При этом бинарный контент не отдается в поток, а накапливается в буфере. По завершении работы скрипта вызывается обработчик, в котором мы измеряем размер контента в байтах, и добавляем соответствующий заголовок, тем самым четко указываем браузеру, какой объем данных он должен прочесть из потока.
Alex149149
28.12.2012 - 12:53
про браузеры скажу, что сразу пробовал во всех известных, даже тот что не обновлялся никогда - IE выводил так же, хотя проверял до этого "косяка" так же во всех, работало нормально, выводилось полностью.
Останется загадной )))
Еще раз огромное спасибо, без Вас я бы врятли разобрался или прошло бы еще полгода )))
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.