Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скриншоты... (гррр)
 
 автор: devil943   (04.01.2008 в 01:21)   письмо автору
 
 

Из разны книжек натаскал кода, что бы изображение уменьшалось. Применять я его буду в галлерее (т.е. тыкаем на маленьких скриншот, видим большой).
Вот так вот задана картинка:

<img src=\"getimage.php?img=screenshots/$_GET[game_id]/01.jpg\">


Вот файл с уменьшителем:

<?php
$img 
$_GET[img];
echo 
$img;


function 
resizeimg($filename$w$h) { 
$ratio $w/$h
$size_img getimagesize($filename); 
if(
$size_img[0]<$w) 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); 
echo 
$dest_img;
if (
$size_img[2]==2$src_img imagecreatefromjpeg($filename);                     
elseif(
$size_img[2]==1$src_img imagecreatefromgif($filename); 
elseif(
$size_img[2]==3$src_img imagecreatefrompng($filename); 
if (!
imagecopyresampled($desp_img$src_img
                    
0000$w$h
                    
$size_img[0], $size_img[1])) return false
$path_parts=pathinfo($filename); 
if (
$path_parts["extension"] == "jpg") { 
    
header ("Content-type: image/jpeg");
    
imagejpeg($dest_img); 
} elseif (
$path_parts["extension"] == "gif") { 
    
header ("Content-type: image/gif");
    
imagegif($dest_img); 
} elseif (
$path_parts["extension"] == "png") { 
    
header ("Content-type: image/png");
    
imagepng($dest_img); 

imagedestroy($dest_img); 
imagedestroy($src_img); 
return 
true
}   

$i resizeimg($img300150);
echo 
$i;
?>

Выдает пустое изображение (т.е ничего не выдает).

   
 
 автор: SHAman   (04.01.2008 в 15:58)   письмо автору
 
   для: devil943   (04.01.2008 в 01:21)
 

Такой подход порочен. Допустим, у вас на странице 50 превьюшек. Это значит, что при загрузке этой страницы, моментально на сервере взлетит 50 php! Картинки будут грузиться долго, сервер лопнет.

Превьюшки нужно делать, при ЗАГРУЗКЕ картинок на сервер, и класть их рядышком.

   
 
 автор: devil943   (04.01.2008 в 17:22)   письмо автору
 
   для: SHAman   (04.01.2008 в 15:58)
 

Ну я пока только изучаю функции для работы с изображением. Мне просто интересно, почему оно не работает?

   
 
 автор: SHAman   (04.01.2008 в 18:19)   письмо автору
 
   для: devil943   (04.01.2008 в 17:22)
 


<?php 
$img 
$_GET[img]; #Получили адрес картинки
echo $img;      #зачем-то его вывели. Нафига? Уберите.


Попробуйте.

   
 
 автор: devil943   (04.01.2008 в 22:50)   письмо автору
 
   для: SHAman   (04.01.2008 в 18:19)
 

>

><?php 
>$img $_GET[img]; #Получили адрес картинки
>echo $img;      #зачем-то его вывели. Нафига? Уберите.
>

>
>Попробуйте.
Это я пробовал.... оно и без этого не работает

   
 
 автор: Киналь   (04.01.2008 в 23:29)   письмо автору
 
   для: devil943   (04.01.2008 в 01:21)
 

Попробуйте убрать пока что header'ы. Скорее всего, увидите что-то новое)

   
 
 автор: devil943   (04.01.2008 в 23:45)   письмо автору
 
   для: Киналь   (04.01.2008 в 23:29)
 

Так ошибок заголовком он не выдает (и не должен, они генерятся в другом месте).
Ошибок вообще нет, как и результата.

   
 
 автор: SHAman   (04.01.2008 в 23:54)   письмо автору
 
   для: devil943   (04.01.2008 в 23:45)
 

уберите все выводы, кроме последнего! Что за глупость? Я просмотрел, а сами не догадаетесь?


echo $dest_img; //убрать!

   
 
 автор: devil943   (05.01.2008 в 14:20)   письмо автору
 
   для: SHAman   (04.01.2008 в 23:54)
 

>уберите все выводы, кроме последнего! Что за глупость? Я просмотрел, а сами не догадаетесь?
>
>

>echo $dest_img; //убрать!
>

Сделал, не помогло.

   
 
 автор: Киналь   (04.01.2008 в 23:55)   письмо автору
 
   для: devil943   (04.01.2008 в 23:45)
 

То есть если даже убрать все заголовки, все равно белый экран?

   
 
 автор: devil943   (05.01.2008 в 14:16)   письмо автору
 
   для: Киналь   (04.01.2008 в 23:55)
 

Экран не белый. Просто нет изображения.... как бы это описать.. красный крестик :)

У картинки вот такой путь: http://o-rpg.com/games/getimage.php?img=screenshots/2/01.jpg
Есть папка screenshots, а в ней 1,2,3 и тд, где эти цифры - идентификатор игры.

   
 
 автор: Киналь   (05.01.2008 в 14:46)   письмо автору
 
   для: devil943   (05.01.2008 в 14:16)
 

Хм. Красный крестик - это, видимо, отстуствие картинки) То есть браузер пытается вывести картинку, но ее нет или она неправильная. Раз браузер пытается вывести картинку, значит, ему переданы заголовки картинки. А раз переданы заголовки картинки, никаких сообщений об ошибке вы не увидите. Вот про то я и толкую: уберите все header'ы и обратитесь непосредственно к скрипту, то есть напишите в строке адреса http://o-rpg.com/games/getimage.php?img=screenshots/2/01.jpg. Тогда вы увидите либо какие-то сообщения об ошибках, либо кучу иероглифов - картинку в текстовом виде. Тогда уже будет, о чем думать)

   
 
 автор: devil943   (05.01.2008 в 14:55)   письмо автору
 
   для: Киналь   (05.01.2008 в 14:46)
 

Если без аргументов - выдает единицу....
Если подставить путь то выдаест ошибку, указанную вами вот в этйо строке:


if (!imagecopyresampled($desp_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1])) return false; 

   
 
 автор: Киналь   (06.01.2008 в 01:15)   письмо автору
 
   для: devil943   (05.01.2008 в 14:55)
 

>Если без аргументов - выдает единицу....
>Если подставить путь то выдаест ошибку, указанную вами вот в этйо строке:
>
>

>if (!imagecopyresampled($desp_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1])) return false; 
>


Ну вот ее и исправляйте=)

   
 
 автор: devil943   (06.01.2008 в 02:15)   письмо автору
 
   для: Киналь   (06.01.2008 в 01:15)
 

Легко сказать :) я например ошибки не вижу
Он же сообщает, что один из аргументов функции - нул! Но это по идееи не так!

   
 
 автор: Киналь   (06.01.2008 в 12:48)   письмо автору
 
   для: devil943   (06.01.2008 в 02:15)
 

Компилятор всегда прав, почти как клиент=) А вообще поиск ошибок называется отладкой и занимает, как правило, фигову тучу времени. В данном случае, возможно, дело в опечатке - у вас есть переменная $dest_img, а в функцию вы подставляете $desp_img. В общем же случае, если компилятору не нравится какая-то переменная, выводите ее на экран и смотрите - соответствует она вашим ожиданиям или нет.

   
 
 автор: devil943   (06.01.2008 в 13:26)   письмо автору
 
   для: Киналь   (06.01.2008 в 12:48)
 

О! Точно, спасибо огоромное!

   
 
 автор: SHAman   (05.01.2008 в 16:09)   письмо автору
 
   для: Киналь   (05.01.2008 в 14:46)
 

Ничего подобного! Напишите в html просто <img src=""> и увидите этот самый крестик. Заголовки тут не при чем. При выводе изображений, заголовки посылать необходимо. Здесь ошибки нет.

   
 
 автор: devil943   (05.01.2008 в 19:25)   письмо автору
 
   для: SHAman   (05.01.2008 в 16:09)
 

Вы лучше скажите в чем ошибка... Так как скрипт фактически списан из книги "PHP на примерах" авторов этого форума, он должен быть правильный..

   
 
 автор: Киналь   (06.01.2008 в 01:14)   письмо автору
 
   для: SHAman   (05.01.2008 в 16:09)
 

>Ничего подобного! Напишите в html просто <img src=""> и увидите этот самый крестик. Заголовки тут не при чем. При выводе изображений, заголовки посылать необходимо. Здесь ошибки нет.

Как раз при чем. Для отладки их как раз убрать и надо. Вот ведь, одну ошибку уже нашли. можно копать дальше. Когда ошибки перестанут появляться, вот тогда заголовки надо будет вернуть.

   
 
 автор: Киналь   (05.01.2008 в 14:48)   письмо автору
 
   для: devil943   (05.01.2008 в 14:16)
 

Кстати, вот вам и первая ошибка:
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/host4571/www/games/getimage.php on line 18

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования