|
|
|
| Господа, столкнулся с траблой: При использовании функций GD при создании изображений и вывода их сразу в буфер обозревателя - картинки не отображаются.
В инете все ОК. Пробовал код, который здесь приводили по изменению размера изображений на лету - то же самое. Если изменять картинку и сохранять на диск то она нормально сохраняется, а если сразу в браузер то ничего, висит стандартная пиктограмма что здесь картинка а картинка не показывается.
GD версии 2.0.22. все опции - enabled
В чем может быть дело? | |
|
|
|
|
|
|
|
для: XPraptor
(10.07.2005 в 19:10)
| | Возможно перед выводом не были отосланы заголовки
header('Content-type: image/jpg');
header('Content-type: image/gif');
header('Content-type: image/png');
(В зависимости от формата изображения)
На всякий случай лучше установить error_reporting(E_ALL); на момент отладки
Ещё как вариант, в браузере отключены картинки/включено кеширование изображений. | |
|
|
|
|
|
|
|
для: PHPFan
(10.07.2005 в 21:21)
| | Заголовки передаются, ошибок никаких, картинки включены.
На счет кэширования - как оно может повлиять на прямой вывод и как избавиться от этой беды? | |
|
|
|
|
|
|
|
для: XPraptor
(10.07.2005 в 19:10)
| | > Пробовал код, который здесь приводили по изменению размера
В том коде была ошибка - попробуйте использовать его еще раз.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5325&id_post=31078 | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(11.07.2005 в 08:17)
| | Нет, именно последний пробовал. Я же говорю картинка сохраняется и изменяется когда на диск ложишь, а напрямую в браузер не идет. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(11.07.2005 в 08:17)
| | Млина, нашел глюкен. Оказалось нельзя передавать абсолютный путь к файлу картинки, нужно только относительный от положения скрипта. А теперь кто-нить объясните мне эту фичу пожалуйста.
Кстати, в статистике CNStats графики тоже GD-шкой рисуются и тоже передается абсолютный путь к файлу и так же не выводится у меня на локальном компе, а в нете ок. | |
|
|
|
|
|
|
|
для: XPraptor
(11.07.2005 в 14:47)
| | С предыдущим глюком разобрался.
Теперь столкнулся еще с одним неудобством: В инете, когда сжимается файл формата .gif а в нем прозрачная основа - она красится в черный цвет, хотя фон создаваемого изображения белый. Что это может быть и как с этим бороться.
Дизайнер - хэлп ми! | |
|
|
|
|
|
|
|
для: XPraptor
(12.07.2005 в 14:44)
| | Попробуйте вот так:
Файл img.php c функцией масштабирования, которая поддерживает работу с прозрачными GIF-ами
<?
// Здесь можно и нужно добавить код, проверяющий
// содержимое переменной $_GET["file"]
// Вдруг вам хакер или просто любопытствующий туда
// что-нибудь не то передаст
$filename = $_GET["file"];
// Вызываем функцию масштабирования
resizeimg($filename, 50,50);
// Функция масштабирования
function resizeimg($filename, $w, $h)
{
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии,
// чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// Обработка изображения для поддержки прозрачности
$backgr = imagecolorallocate($dest_img, 0,0, 0);
imagetruecolortopalette($dest_img, true, 1);
imagecolortransparent($dest_img, $backgr);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// Выводим уменьшенную копию в поток вывода
if ($size_img[2]==2) header('Content-type: image/jpg');
else if ($size_img[2]==1) header('Content-type: image/gif');
else if ($size_img[2]==3) header('Content-type: image/png');
// Выводим уменьшенную копию в поток вывода
if ($size_img[2]==2) imagejpeg($dest_img);
else if ($size_img[2]==1) imagegif($dest_img);
else if ($size_img[2]==3) imagepng($dest_img);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
?>
|
PS: не проверял как теперь работает с JPEG | |
|
|
|
|
|
|
|
для: XPraptor
(11.07.2005 в 14:47)
| | > А теперь кто-нить объясните мне эту фичу пожалуйста.
Фича, что нужен относительный путь? Хм… обычная фича. Мне кажется, что так удобнее. Переносимость скрипта между хостами улучшается. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(14.07.2005 в 11:47)
| | Дизайнер -сенкс большой, попробую твой вариант с прозрачностью.
А на счет фичи - абсолютный путь - вообще не работает. Скрипт ничего не выводит в браузер на локальном компе, а в нете выводит. Вот про это я и спрашивал - почему не выводит на локально если указан абсолютный путь. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(14.07.2005 в 11:47)
| | Дизайнер - вери вери сенкс! Работает как надо! Можешь посмотреть на плоды своего труда здесь: http://www.shop.aon.by/product.php
Я еще переделал функцию для написания по картинкам текста во время вывода, вот приложил свой вариант в атаче. Но по прозрачным gif-ам очень плохо пишет, поэтому пришлось у себя закоментировать этот кусок, а на jpeg-ах вполне сносно.
Еще раз огромное спасибо. | |
|
|
|
|
|
|
|
для: XPraptor
(14.07.2005 в 18:54)
| | >Можешь посмотреть на плоды своего труда здесь: http://www.shop.aon.by/product.php
Полностью Ваше произведение? Симпатично... только трафикопожирающе :) | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(14.07.2005 в 22:06)
| | Да, мое произведение.
Да в принципе не очень трафик жрет. У меня он бесплатный при соблюдении стандартных условий, а они соблюдаются. | |
|
|
|
|
|
|
|
для: XPraptor
(15.07.2005 в 01:48)
| | Я про мой трафик, который я трачу во время просмотра сайта :) | |
|
|
|