Реклама на сайте Advertise with us

PHP скрипт для получния, ресайзинга и закачки на сервер фото

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 04/06/08 в 22:36       Ответить с цитатойцитата 

В общем задача по урл имиджа скачать его и закачать на мой сервер в уменьшенном размере..

Может подскажите скрипт, или хотя бы удобные библиотеки которые можно использовать?

Заранее спасибо icon_smile.gif

0
 



С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430

Ссылка на сообщениеДобавлено: 05/06/08 в 05:57       Ответить с цитатойцитата 

file_get_contents скачаешь
сохранишь а дальше кури маны по ImageMagick или GD
и потом
exec('/usr/bin/convert'.'тут то что накуришь'.'old.jpg resized.jpg');
гугл тебе в помощь

3
 

« ... full on ... »

С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686

Ссылка на сообщениеДобавлено: 05/06/08 в 07:20       Ответить с цитатойцитата 

Для работы с HTTP/FTP можно выбрать что-то отсюда: http://phpclasses.mkdata.net/browse/class/6.html

Для работы с картинками отсюда: http://phpclasses.mkdata.net/browse/class/11.html

Power of the lime madness...

3
 



С нами с 14.10.02
Сообщения: 462
Рейтинг: 727

Ссылка на сообщениеДобавлено: 05/06/08 в 11:36       Ответить с цитатойцитата 

Примерно так наверно.

Код:
<?
function url_content($url, $ref="") {
       $USERAGENT = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
    $ch = curl_init( );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_USERAGENT, $USERAGENT );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
    curl_setopt( $ch, CURLOPT_REFERER, $ref );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, "temp.txt" );
    curl_setopt( $ch, CURLOPT_COOKIEFILE, "temp.txt" );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
    curl_setopt( $ch, CURLOPT_TIMEOUT, 60 );
    $get = curl_exec( $ch );
    curl_close( $ch );
    return $get;
}
function save_content($file,$dest) {
$fn = basename($file);
$fnd=$file;
$dest = $dest.$fn;
    $ch = curl_init();
    $fp = fopen($fnd,"r");
    curl_setopt($ch, CURLOPT_UPLOAD, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 300);
    curl_setopt($ch, CURLE_OPERATION_TIMEOUTED, 300);
    curl_setopt($ch, CURLOPT_URL, $dest);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($fnd));
    curl_exec($ch);
    fclose ($fp);
    $errorMsg = '';
    $errorMsg = curl_error($ch);
    $errorNumber = curl_errno($ch);
    curl_close($ch);

if($errorMsg or $errorNumber) {echo "$errorMsg - $errorNumber<br>";}
}

//Author Alan Reddan Silverarm Solutions
//Date 27/01/2005
//Function that works well with images.
//It takes the image and reduces its size to best fit. i.e If you have an image
//that is 200 X 100 and you want a thumbnail of 75 X 50,
//it first resizes the image to 100 X 50
//and then takes out a portion 75 X 50 from then center of the input image.
//So loads of image information is retained.
//The corollary also holds if your input image is 100 X 200
//it first resizes image to 75 X 150 and then takes out a
//portion 75 X 75 from the centre
// The advantage here is that function decides on whether
//resize is by width or height itself.
//it also decides whether to use the height or the width as the base start point
//in the case that athumbnail is rectangular

function resize_then_crop( $filein,$fileout,$imagethumbsize_w,$imagethumbsize_h,$red,$green,$blue)
{
// Get new dimensions
list($width, $height) = getimagesize($filein);
$new_width = $width * $percent;
$new_height = $height * $percent;

   if(preg_match("/.jpg/i", "$filein"))
   {
       $format = 'image/jpeg';
   }
   if (preg_match("/.gif/i", "$filein"))
   {
       $format = 'image/gif';
   }
   if(preg_match("/.png/i", "$filein"))
   {
       $format = 'image/png';
   }
 
       switch($format)
       {
           case 'image/jpeg':
           $image = imagecreatefromjpeg($filein);
           break;
           case 'image/gif';
           $image = imagecreatefromgif($filein);
           break;
           case 'image/png':
           $image = imagecreatefrompng($filein);
           break;
       }

$width = $imagethumbsize_w ;
$height = $imagethumbsize_h ;
list($width_orig, $height_orig) = getimagesize($filein);

if ($width_orig < $height_orig) {
  $height = ($imagethumbsize_w / $width_orig) * $height_orig;
} else {
    $width = ($imagethumbsize_h / $height_orig) * $width_orig;
}

if ($width < $imagethumbsize_w)
//if the width is smaller than supplied thumbnail size
{
$width = $imagethumbsize_w;
$height = ($imagethumbsize_w/ $width_orig) * $height_orig;;
}

if ($height < $imagethumbsize_h)
//if the height is smaller than supplied thumbnail size
{
$height = $imagethumbsize_h;
$width = ($imagethumbsize_h / $height_orig) * $width_orig;
}

$thumb = imagecreatetruecolor($width , $height);
$bgcolor = imagecolorallocate($thumb, $red, $green, $blue); 
ImageFilledRectangle($thumb, 0, 0, $width, $height, $bgcolor);
imagealphablending($thumb, true);

imagecopyresampled($thumb, $image, 0, 0, 0, 0,
$width, $height, $width_orig, $height_orig);
$thumb2 = imagecreatetruecolor($imagethumbsize_w , $imagethumbsize_h);
// true color for best quality
$bgcolor = imagecolorallocate($thumb2, $red, $green, $blue); 
ImageFilledRectangle($thumb2, 0, 0,
$imagethumbsize_w , $imagethumbsize_h , $white);
imagealphablending($thumb2, true);

$w1 =($width/2) - ($imagethumbsize_w/2);
$h1 = ($height/2) - ($imagethumbsize_h/2);

imagecopyresampled($thumb2, $thumb, 0,0, $w1, $h1,
$imagethumbsize_w , $imagethumbsize_h ,$imagethumbsize_w, $imagethumbsize_h);
if ($fileout !="")imagegif($thumb2, $fileout); //write to file
}


//Загрузка и Обработка Картинки Ковыряем под себя здесь


$urlgal="http://localhost/url-img.jpg";   // URL исходной картинки
$img=url_content($urlgal);
if(file_exists('./temp.jpg')){unlink('./temp.jpg');}
$fp=fopen('./temp.jpg','wb');
fwrite($fp,$img);
fclose($fp);

$filein = './temp.jpg'; // File in
$fileout = './temp2.jpg'; // Fileout - optional
$imagethumbsize_w = 100; // thumbnail size (area cropped in middle of image)
$imagethumbsize_h = 150; // thumbnail size (area cropped in middle of image)


resize_then_crop( $filein,$fileout,$imagethumbsize_w,$imagethumbsize_h,/*rgb*/"255","255","255");
echo "w - $imagethumbsize_w, h - $imagethumbsize_h";
$dest="ftp://login:pass@ftp.your-host.com/"; // ftp куда заливать
save_content('./temp2.jpg',$dest);
echo "Готово!";
?>

3
 



С нами с 26.02.03
Сообщения: 2358
Рейтинг: 987

Ссылка на сообщениеДобавлено: 06/06/08 в 11:51       Ответить с цитатойцитата 

Proo писал:
Может подскажите скрипт
CibCM - все что тебе нужно и даже больше

3
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 06/06/08 в 23:45       Ответить с цитатойцитата 

всем спасибо, поизучаю icon_smile.gif

0
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 10/06/08 в 00:25       Ответить с цитатойцитата 

Хотел использовать вариант что описал Axel-B, но на виндах GD не стоит.. соответственно некоторые функции не работают, напр imagecreatefromjpeg и другие..


Никто не подскажет как установить GD на виндах?

Закачал, установил..

http://sourceforge.net/project/downloading.php?groupname=gnuwin32&a…or=surfnet

но может надо какие настройки еще.. пока не работает..

0
 

php наше всё :)

С нами с 26.07.04
Сообщения: 814
Рейтинг: 447

Ссылка на сообщениеДобавлено: 10/06/08 в 01:24       Ответить с цитатойцитата 

Открой c:\windows\php.ini и сделай поиск по "gd". Найдешь строчку с php_gd2.dll (так в php4 Он назывется :). Типа такой:
Цитата:
;extension=php_gd2.dll


Как найдешь соответствующую строчку - убери знак ";" перед ней... Далее пробуй запустить скрипт. Если всё-равно не работает, то загляни в папку с установленным php, там подпапка extensions и поищи там файлик php_gd2.dll. Если его там нет, то надо скачать с php.net zip-фаил соответствующий и распаковать в папку с пхп...

Т.е. на php.net, сам php выдают 2 пакетами:
Цитата:
# PHP 5.2.6 zip package [9,516Kb] - 3 May 2008
# PHP 5.2.6 installer [19,373Kb] - 6 May 2008


Вот в zip package лежит как php_gd2.dll, так и инфа по установке extensionoв... :)

Дерзай!

3
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 10/06/08 в 10:40       Ответить с цитатойцитата 

В общем дерзанул icon_smile.gif

Пока не очень.. раскомментил библиотеку в php.ini, загрузил php, копирнул длл, сначала в корень апаче, потом создал ext - туда

Выдает ошибку: Unknown(): Unable to load dynamic library './php_gd2.dll' - Не найден указанный модуль

Попытаюсь разобраться, может кто подскажет что не так? Стоит старый ПХП (4.1 вроде), может в этом дело?

0
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 10/06/08 в 10:47       Ответить с цитатойцитата 

Скопировал в Windows.. и наконец в папку с ПХП (как мне писали вообще то icon_smile.gif), теперь пишет не найдет php5ts.lib.. я так понимаю пошла уже зависимость от 5ого ПХП.. может устнавоить сразу целиком? Если да, как грамотно это сделать поверх ПХП4?

0
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 10/06/08 в 11:01       Ответить с цитатойцитата 

Попробовал установить PHP5, заменил что в папке c:\PHP на новое.. php.ini тоже новый закачал в WINDOWS, дает ошибку

Internal Server Error

похоже самому не справиться icon_smile.gif

0
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 10/06/08 в 12:03       Ответить с цитатойцитата 

gd2 есть и под php4 и под php5. Надо из правильного пакета брать.
Я почему-то помню что gd2 шёл с php4 сразу. Могу ошибаться.
Сейчас рекоммендуют переходить на php5 ибо php4 прекращают развивать.
Ставишь php5 поверх 4

3
 



С нами с 14.10.02
Сообщения: 462
Рейтинг: 727

Ссылка на сообщениеДобавлено: 10/06/08 в 12:16       Ответить с цитатойцитата 

Установи XAMPP и не мучайся, ИМХО очень хороший набор(чтоб заработал curl, раскоментируй в php.ini нужную строку, по аналогии с написанным выше).

* Apache HTTPD 2.2.8 + Openssl 0.9.8g
* MySQL 5.0.51a
* PHP 5.2.5
* PHP 4.4.8
* phpMyAdmin 2.11.4
* FileZilla FTP Server 0.9.25
* Mercury Mail Transport System 4.52

3
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 10/06/08 в 12:35       Ответить с цитатойцитата 

Всех благодарю и + icon_smile.gif

В общем сделал, сразу на серваке пока, на локальной время жалко, попозже может icon_smile.gif

Все работает, только ошибка когда файла нет.. на диске узнать есть ли файл - file_exists, а как если по урл нужно?

0
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 10/06/08 в 12:46       Ответить с цитатойцитата 

Во нашел icon_smile.gif

Код:

function url_exists($url) {
    // Version 4.x supported
    $handle   = curl_init($url);
    if (false === $handle)
    {
        return false;
    }
    curl_setopt($handle, CURLOPT_HEADER, false);
    curl_setopt($handle, CURLOPT_FAILONERROR, true);  // this works
    curl_setopt($handle, CURLOPT_NOBODY, true);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
    $connectable = curl_exec($handle);
    curl_close($handle);   
    return $connectable;
}

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »