[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Изображение с ограниченым размером
Страницы: 1, 2
killer8080
Alex149149
покажи весь код целиком, как используешь.
Alex149149
так и использую

<?php
header('Content-Type: image/jpeg');
// Create image instances
$src = imagecreatefromjpeg('image.jpeg');
$dest = imagecreatetruecolor(314, 399);

// Copy
imagecopy($dest, $src, 0, 0, 0, 0, 314, 399);

// Output and free from memory
imagejpeg($dest);

imagedestroy($dest);
imagedestroy($src);
?>
killer8080
Alex149149
попробуй не выводить картинку в поток, а сохранить в виде файла.
imagejpeg($dest, 'pic.jpg');

то же обрежет?
Alex149149
нет, сохранило полностью, без обрезаний
killer8080
Цитата (Alex149149 @ 27.12.2012 - 19:48)
нет, сохранило полностью, без обрезаний

Это точно весь код? Похоже криво формируется http заголовок Content-Length
Посмотри фаирбагом, что там в заголовках передается.
Alex149149
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
Цитата (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
Cервис http://www.bertal.ru
HTTP/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
попробуй в начале добавить
ob_start('ob_handler');

function ob_handler($buffer){
header('Content-Length: ' . strlen($buffer));
return $buffer;
}
Alex149149
killer8080, Огромнейшее спасибо Вам! Все теперь корректно выводится.
Если не сложно, можите рассказать в чем была загвозда и пояснить код. Буду премного благодарен! Самое интересное, что все до этого работало и ничего не менялось в настройках сервера. Ваши предположения почему это случилось.
killer8080
Цитата (Alex149149 @ 28.12.2012 - 10:34)
Если не сложно, можите рассказать в чем была загвозда и пояснить код.

В ответном заголовке сервера отсутствовало указание размера контента, в такой ситуации браузер будет читать контент из потока пока открыто соединение. Откуда взялось ограничение в 8К мне самому не понятно. Попробуй в разных браузерах его по открывать, возможно баг конкретно этой версии браузера. По коду. Мы просто включаем буферизацию контента, и назначаем обработчик буфера. При этом бинарный контент не отдается в поток, а накапливается в буфере. По завершении работы скрипта вызывается обработчик, в котором мы измеряем размер контента в байтах, и добавляем соответствующий заголовок, тем самым четко указываем браузеру, какой объем данных он должен прочесть из потока.
Alex149149
про браузеры скажу, что сразу пробовал во всех известных, даже тот что не обновлялся никогда - IE выводил так же, хотя проверял до этого "косяка" так же во всех, работало нормально, выводилось полностью.
Останется загадной )))
Еще раз огромное спасибо, без Вас я бы врятли разобрался или прошло бы еще полгода )))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.