[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка в добавление Img в БД
Gigabit
Народ такая вот проблема есть скрипт отправка картинки в БД

$path_to_90_directory = '../../skidki/';//папка, куда будет загружаться начальная картинка и ее сжатая копия


if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['img']['name']))//проверка формата исходного изображения
{

$filename = $_FILES['img']['name'];
$source = $_FILES['img']['tmp_name'];
$filename = md5( basename($_FILES['img']['name']) );
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory

if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($target) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($target) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($target); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
}


// Создание квадрата 90x90
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности


$w = 100; // квадратная 90x90. Можно поставить и другой размер.

// создаём исходное изображение на основе
// исходного файла и определяем его размеры

$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат

$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)

if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);


imagegif($dest,$target.".gif");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.

//почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.


$simg = $target.".gif";//заносим в переменную путь до картинки.








и где то там ошибка есть но вот не могу понять почему вот что выводит в браузере. Ругается он в этом месте
$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения
и в этом imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);




код ошибки!
Warning: imagesx(): supplied argument is not a valid Image resource in Z:\home\online-offis.ru\www\control\select\skidki.php on line 51

Warning: imagesy(): supplied argument is not a valid Image resource in Z:\home\online-offis.ru\www\control\select\skidki.php on line 52

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in Z:\home\online-offis.ru\www\control\select\skidki.php on line 72



может кто подскажет



Спустя 15 минут, 59 секунд (1.01.2011 - 22:20) Invis1ble написал(а):
Gigabit
перед
$w_src = imagesx($im);
поставь
var_dump($im);
и напиши, что выдаст

Спустя 5 минут, 8 секунд (1.01.2011 - 22:25) Gigabit написал(а):
я поставил var_dump($im); и в строке $filename = md5( basename($_FILES['img']['name']) ); изменил переменную filename на filenam, и все заработала) Спасибо огромное с Праздником Вас! ))

Спустя 8 минут, 15 секунд (1.01.2011 - 22:33) Invis1ble написал(а):
Gigabit
Цитата
$filename = md5( basename($_FILES['img']['name']) )

вот здесь зачем хешируется? Из-за этого не выполняется ни одно из последующих 3-х условий, следовательно $im не существует, поэтому возникает проблема...
Если уж так нужно хэшировать, то в условиях с preg_match второй аргумент поставь $_FILES['img']['name'] - и будет счастье =)

Спустя 39 секунд (1.01.2011 - 22:34) Invis1ble написал(а):
Gigabit
пожалуйста, немного опередил ты меня =)
Быстрый ответ:

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