Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: imagecreatefromjpeg из URL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как правильно?
totje
Отправлено: 26 Февраля, 2011 - 18:57:13
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




как сделать правильно?
PHP:
скопировать код в буфер обмена
  1.  
  2.  $image = imagecreatefromjpeg($photo); // где $photo = 'http://cs123123.vkontakte.ru/u123123/a_123123.jpg'
  3.  

дальше идет код построения изображения, который нормально работает при загрузке своих фоток.
но изображение не создается..
что может быть не так?
"fopen wrappers" в php.ini включено
 
 Top
ALEN
Отправлено: 26 Февраля, 2011 - 20:13:47
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




totje
Ну работать с удаленными данными не через CURL - идея дурная. Не везде будет работать.
И еще нужно разбираться как производится построение самого изображения.
 
 Top
totje
Отправлено: 26 Февраля, 2011 - 20:39:50
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ALEN
а можно поподробней про curl? пока с этим не сталкивался.
вот весь код:
PHP:
скопировать код в буфер обмена
  1.  
  2. $image = imagecreatefromjpeg($photo);
  3. $w = 150;
  4. $h = 225;
  5. $ratio = $h/$w;
  6. $tmp = imagecreatetruecolor($w,$h);
  7. if ($ratio_src < $ratio)
  8. {
  9. imagecopyresampled($tmp, $image, 0, 0, round(($w_src-$h_src/$ratio)/2), 0, $w, $h, round($h_src/$ratio), $h_src);
  10. }
  11. else
  12. {
  13.  imagecopyresampled($tmp, $image, 0, 0, 0, round(($h_src-$w_src*$ratio)/2), $w, $h, $w_src, round($w_src*$ratio));
  14. }
  15. $name=$login.'_'.time().rand(10000,32767);                                     
  16. imagejpeg($tmp, $path.$name.".jpg");
  17. $fullpath = $path.$name.".jpg";
  18. //запись в бд
  19.  
 
 Top
ALEN
Отправлено: 26 Февраля, 2011 - 20:50:45
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




totje
1) Копируешь просто файл на на свой сервер
2) Есть много готовый классов для изменения размеров изображения
 
 Top
koka
Отправлено: 26 Февраля, 2011 - 20:55:30
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Июнь 2010  
Откуда: Россия, Ижевск


Помог: 1 раз(а)




Если я правильно думаю, totje, вам нужно получить n картинок с сайта vkontakte.ru
Скорее всего, получить страницу без CURl вы не сможете.

Вот пример, как можно получить нужные картинки с определенной страницы сайта.

PHP:
скопировать код в буфер обмена
  1. define('WWW', 'http://www.site.ru');
  2.  
  3. //$url - адрес страницы
  4.  
  5. $code_curl = curl_init(WWW.$url);
  6.  
  7. curl_setopt ($code_curl, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.00");
  8. #подделываем User-Agent
  9.  
  10.  
  11. $headers = array
  12. (
  13.     'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
  14.     'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8',
  15.     'Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0',
  16.     'Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1'
  17. );
  18. //придумали заголовки браузеру
  19.  
  20. curl_setopt($code_curl, CURLOPT_HTTPHEADER,$headers);
  21. # добавляем заголовков к нашему запросу. Чтоб смахивало на настоящих
  22.  
  23. curl_setopt($code_curl, CURLOPT_REFERER, "http://www.site.ru/catalog");
  24. # Подделываем значение - откуда пришли данные.
  25.  
  26. curl_setopt($code_curl, CURLOPT_COOKIEJAR, "my_cookies.txt");  
  27. curl_setopt($code_curl, CURLOPT_COOKIEFILE, "my_cookies.txt");  
  28. # Сохраняем полученный куки в файл и говорим сайту, какие куки у нас уже есть
  29.  
  30. curl_setopt($code_curl, CURLOPT_RETURNTRANSFER, 1);
  31. # Убираем вывод данных в браузер. Пусть функция их возвращает а не выводит
  32.  
  33. $code = curl_exec($code_curl); // выполняем запрос curl
  34. curl_close($code_curl);
  35.  
  36. //С помощью регулярного выражения получаем ссылки на нужные нам картинки
  37.  
  38.  
  39. preg_match_all('#<a id="def_gimage" href="(.+?)"(.+?)>(\s+)?<img class="spare" src="(.+?)">#i', $html, $link);
  40.  
  41.  
  42. for ($i=0;isset($link[4][$i]);$i++)
  43. {
  44. $img=imagecreatefromjpeg("http://www.alfeco.ru".$link[4][$i]."");
  45. $link [4][$i] = str_replace("/preview/150x100/content/setup/pics/catalog_1/","preview/",$link[4][$i]);//изменили путь к изображению - потом сохраним его в БД
  46.  
  47. imagegif($img,$link[4][$i]);
  48.  
  49. $photo_pr[$i] = $link[4][$i];
  50. }
  51.  


возможно, вам ещё прийдется включить curl_setopt($code_curl, CURLOPT_POST, 1); и передать POST данные сайту.


-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
totje
Отправлено: 26 Февраля, 2011 - 21:31:36
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ALEN
а можно просто пример, как правильно это сделать?) пробовал ф-цией copy, безрезультатно..
koka
не, это вроде как совсем не то.
пишу авторизацию/регистрацию через вк на сайте, точней все уже написал еще вчера, осталась только проблема с аватарами - через апи вк передается путь до авы среди прочих данных(http://cs123123.vkontakte.ru/u123123/a_123123.jpg, например), так вот нужно просто эту картинку скачать и отформатировать под свои требования, а затем удалить или же сразу отформатировать, не скачивая, ну и сохранить у себя на сервере.
вроде все должно быть просто для опытных кодеров

(Отредактировано автором: 26 Февраля, 2011 - 21:32:24)

 
 Top
ALEN
Отправлено: 26 Февраля, 2011 - 21:38:06
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




totje
Ну copy не гарантирует копию удаленного файла, разбери пример выше с CURL ? вот только не пойму как ты написал авторизацию на сайте и не можешь скопировать файл.
 
 Top
totje
Отправлено: 26 Февраля, 2011 - 22:27:41
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ALEN
столько букв, не ожидал, что скопировать картинку на сервер будет так сложно.. раньше просто с этим сталкиваться не приходилось, все ведь когда-то в первый раз)
и еще понять не могу, почему нельзя обойтись одной лишь imagecreatefromjpeg? в ней ведь предусмотрено построение изображение по url
 
 Top
ALEN
Отправлено: 26 Февраля, 2011 - 22:30:46
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




totje
Ну по той же причине почему нельзя и с помощью copy копировать удаленные изображения - там ведь тоже это предусмотрено, но хостуры свободные доступы ужимают
 
 Top
totje
Отправлено: 27 Февраля, 2011 - 09:29:55
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




сделал так
PHP:
скопировать код в буфер обмена
  1.  
  2.                                 $ch = curl_init();
  3.                                 $headers = array
  4.                                 (
  5.                                     'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
  6.                                     'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8',
  7.                                     'Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0',
  8.                                     'Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1'
  9.                                 );
  10.                                 curl_setopt ($code_curl, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.00");
  11.                                 curl_setopt($code_curl, CURLOPT_HTTPHEADER,$headers);
  12.                                 curl_setopt($ch, CURLOPT_URL, $photo);
  13.                                 curl_setopt($ch, CURLOPT_TIMEOUT, 300);
  14.                                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  15.  
  16.                                 $st = curl_exec($ch);
  17.  
  18.                                 $fd = @fopen('../img/'.$filename, 'w');
  19.                                 fwrite($fd, $st);
  20.                                 @fclose($fd);
  21.  
  22.                                 curl_close($ch);
  23.  

но ничего никуда не закачивается. что может быть не так?=\
 
 Top
ALEN
Отправлено: 27 Февраля, 2011 - 12:58:38
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




totje
права на запись в папк?
А еще прочитал ли ты http://php.su/functions/?cat=curl это?
 
 Top
totje
Отправлено: 27 Февраля, 2011 - 13:35:38
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




ALEN
с правами норм все, все оказалось куда проще - ошибка была в "../img/", т..к обработчик лежал в одной папке с этой папкой)
спасибо за помощьУлыбка

(Отредактировано автором: 27 Февраля, 2011 - 13:36:10)

 
 Top
JustUserR
Отправлено: 27 Февраля, 2011 - 15:45:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ALEN пишет:
Ну по той же причине почему нельзя и с помощью copy копировать удаленные изображения
В действительности в общем случае процесс осуществления получения ассоциированного файлового объекта из удаленного web-сервера, не является возможным при использовании базовой конфигурации предполагаемой в перегруженных вариациях функций fopen, по причине возможной необходимости проведения авторизационных действий, или модификаци и спецификации параметров информационных полей таких как кодовая таблица или уровень элементного трактования


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB