С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 04/06/08 в 22:36 |
В общем задача по урл имиджа скачать его и закачать на мой сервер в уменьшенном размере..
Может подскажите скрипт, или хотя бы удобные библиотеки которые можно использовать?
Заранее спасибо
|
|
|
|
С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430
|
Добавлено: 05/06/08 в 05:57 |
file_get_contents скачаешь
сохранишь а дальше кури маны по ImageMagick или GD
и потом
exec('/usr/bin/convert'.'тут то что накуришь'.'old.jpg resized.jpg');
гугл тебе в помощь
|
|
|
|
« ... full on ... »
С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686
|
Добавлено: 05/06/08 в 07:20 |
|
|
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 "Готово!";
?> |
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 06/06/08 в 11:51 |
Proo писал: | Может подскажите скрипт | CibCM - все что тебе нужно и даже больше
|
|
|
|
С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 06/06/08 в 23:45 |
всем спасибо, поизучаю
|
|
|
|
С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 10/06/08 в 00:25 |
|
|
|
|
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в... :)
Дерзай!
|
|
|
|
С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 10/06/08 в 10:40 |
В общем дерзанул
Пока не очень.. раскомментил библиотеку в php.ini, загрузил php, копирнул длл, сначала в корень апаче, потом создал ext - туда
Выдает ошибку: Unknown(): Unable to load dynamic library './php_gd2.dll' - Не найден указанный модуль
Попытаюсь разобраться, может кто подскажет что не так? Стоит старый ПХП (4.1 вроде), может в этом дело?
|
|
|
|
С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 10/06/08 в 10:47 |
Скопировал в Windows.. и наконец в папку с ПХП (как мне писали вообще то ), теперь пишет не найдет php5ts.lib.. я так понимаю пошла уже зависимость от 5ого ПХП.. может устнавоить сразу целиком? Если да, как грамотно это сделать поверх ПХП4?
|
|
|
|
С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 10/06/08 в 11:01 |
Попробовал установить PHP5, заменил что в папке c:\PHP на новое.. php.ini тоже новый закачал в WINDOWS, дает ошибку
Internal Server Error
похоже самому не справиться
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 10/06/08 в 12:03 |
gd2 есть и под php4 и под php5. Надо из правильного пакета брать.
Я почему-то помню что gd2 шёл с php4 сразу. Могу ошибаться.
Сейчас рекоммендуют переходить на php5 ибо php4 прекращают развивать.
Ставишь php5 поверх 4
|
|
|
|
С нами с 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
|
|
|
|
С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 10/06/08 в 12:35 |
Всех благодарю и +
В общем сделал, сразу на серваке пока, на локальной время жалко, попозже может
Все работает, только ошибка когда файла нет.. на диске узнать есть ли файл - file_exists, а как если по урл нужно?
|
|
|
|
С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54
|
Добавлено: 10/06/08 в 12:46 |
Во нашел
Код: |
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;
}
|
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |
|
Спонсор раздела
|