Качване през урл

GameZone

Registered
Как може да направя така ще като се сложи урл-то на картинката да се качва на моя сървър в папка :)
 
Код:
<?
$link = 'http://web-tourist.net/forum/templates/Maxmedia/images/php.png';

$papka = 'files/';

if ( @getimagesize($link) )
{

$rand = rand(9000000,20000000);
$format = explode("."$link);
$end = end($format);
$new = "$papka$rand.$end";
copy($link,$new);
echo '<a href="'.$new.'">LINK</a>';
}
else
{
echo 'Невалидно!';
}
?>
Промених го!
 
vik96 каза:
Код:
<?
$link = 'http://web-tourist.net/forum/templates/Maxmedia/images/php.png';

$papka = 'files/';

if ( @getimagesize($link) )
{

$rand = rand(9000000,20000000);
$format = explode("."$link);
$end = end($format);
$new = "$papka$rand.$end";
copy($link,$new);
echo '<a href="'.$new.'">LINK</a>';
}
else
{
echo 'Невалидно!';
}
?>
Промених го!

А може ли да стане някакви да оразмерява картинката на 150х150 преди да я качи ?
 
vik96 каза:
Код:
<?
$link = 'http://web-tourist.net/forum/templates/Maxmedia/images/php.png';

$papka = 'files/';

if ( @getimagesize($link) )
{

$rand = rand(9000000,20000000);
$format = explode("."$link);
$end = end($format);
$new = "$papka$rand.$end";
copy($link,$new);
echo '<a href="'.$new.'">LINK</a>';
}
else
{
echo 'Невалидно!';
}
?>
Промених го!

Дава грешка на 10 ред $format = ...
 
Така. Сега написах една функция, която ще ти свърши работа. Ето я и нея:
Код:
function image_resize($path, $name)
{	
// Author - Tsvethan Dichev
	$src = imagecreatefromjpeg($path);
	list($width,$height)=getimagesize($path);
	$width_thumb = 150;
	$height_thumb = ($height/$width) * $width_thumb;
	$tmp = imagecreatetruecolor($width_thumb, $height_thumb);
	imagecopyresampled($tmp, $src, 0, 0, 0, 0, $width_thumb, $height_thumb, $width, $height);
	$save_thumb = "url/". $name; // на мястото на url напиши папката, в която искаш да се запише тъмбнейла
	imagejpeg($tmp, $save_thumb, 100);
	imagedestroy($src);
	imagedestroy($tmp);
}
Сега да обясня как работи. Има два параметъра. Първия е path. Това е пътя (URL-a) към оригиналната картинката. Не съм сложил проверки дали линка действително е към изображение, но ще е достатъчно да се сложи един регулярен израз да проверява преди извикването на функцията (ако искаш да добавяш снимката автоматично през форма).
Втория параметър е name. Това е името на изображението, което ще се запише на хоста. Другото не знам дали има нужда от обяснение. Постарах се да напиша функцията така, че когато сваляш снимката тя да не се размазва.
Дано ти свърши работа!

Ето пример как може да се ползва:
Код:
image_resize('http://194.12.229.98/photos/69/36/36545l.jpg', 'c3c0.jpg');
 
c3c0 каза:
Така. Сега написах една функция, която ще ти свърши работа. Ето я и нея:
Код:
function image_resize($path, $name)
{	
// Author - Tsvethan Dichev
	$src = imagecreatefromjpeg($path);
	list($width,$height)=getimagesize($path);
	$width_thumb = 150;
	$height_thumb = ($height/$width) * $width_thumb;
	$tmp = imagecreatetruecolor($width_thumb, $height_thumb);
	imagecopyresampled($tmp, $src, 0, 0, 0, 0, $width_thumb, $height_thumb, $width, $height);
	$save_thumb = "url/". $name; // на мястото на url напиши папката, в която искаш да се запише тъмбнейла
	imagejpeg($tmp, $save_thumb, 100);
	imagedestroy($src);
	imagedestroy($tmp);
}
Сега да обясня как работи. Има два параметъра. Първия е path. Това е пътя (URL-a) към оригиналната картинката. Не съм сложил проверки дали линка действително е към изображение, но ще е достатъчно да се сложи един регулярен израз да проверява преди извикването на функцията (ако искаш да добавяш снимката автоматично през форма).
Втория параметър е name. Това е името на изображението, което ще се запише на хоста. Другото не знам дали има нужда от обяснение. Постарах се да напиша функцията така, че когато сваляш снимката тя да не се размазва.
Дано ти свърши работа!

Ето пример как може да се ползва:
Код:
image_resize('http://194.12.229.98/photos/69/36/36545l.jpg', 'c3c0.jpg');

всичко е перфекно но защо когато кача друго различно от jpg и ми дава Don't send на apache и не го качва :(
 
Да, трябва да се направят проверки. Ей сега ще редактирам функцията. :)

EDIT:
Код:
function image_resize($path, $name)
{	
// Author - Tsvethan Dichev

	$extensions = array('gif','jpg','jpeg','png');
	$extensions_picture = end(explode('.', $path));
	
		if ($extensions_picture == 'jpg' || $extensions_picture == 'jpeg')
		{
			$src = imagecreatefromjpeg($path);
		}
		else if ($extensions_picture == 'png')
		{
			$src = imagecreatefrompng($path);
		}
		else if ($extensions_picture == 'gif')
		{
			$src = imagecreatefromgif($path); 
		}
		else
		{
			die ('Некоректно въведена картинка');
		}

	list($width,$height)=getimagesize($path);
	$width_thumb = 150;
	$height_thumb = ($height/$width) * $width_thumb;
	$tmp = imagecreatetruecolor($width_thumb, $height_thumb);
	imagecopyresampled($tmp, $src, 0, 0, 0, 0, $width_thumb, $height_thumb, $width, $height);
	$save_thumb = "url/". $name; // на мястото на url напиши папката, в която искаш да се запише тъмбнейла
	imagejpeg($tmp, $save_thumb, 100);
	imagedestroy($src);
	imagedestroy($tmp);
}
Тествах и си работи нормално :)
 
c3c0 каза:
Да, трябва да се направят проверки. Ей сега ще редактирам функцията. :)

EDIT:
Код:
function image_resize($path, $name)
{	
// Author - Tsvethan Dichev

	$extensions = array('gif','jpg','jpeg','png');
	$extensions_picture = end(explode('.', $path));
	
		if ($extensions_picture == 'jpg' || $extensions_picture == 'jpeg')
		{
			$src = imagecreatefromjpeg($path);
		}
		else if ($extensions_picture == 'png')
		{
			$src = imagecreatefrompng($path);
		}
		else if ($extensions_picture == 'gif')
		{
			$src = imagecreatefromgif($path); 
		}
		else
		{
			die ('Некоректно въведена картинка');
		}

	list($width,$height)=getimagesize($path);
	$width_thumb = 150;
	$height_thumb = ($height/$width) * $width_thumb;
	$tmp = imagecreatetruecolor($width_thumb, $height_thumb);
	imagecopyresampled($tmp, $src, 0, 0, 0, 0, $width_thumb, $height_thumb, $width, $height);
	$save_thumb = "url/". $name; // на мястото на url напиши папката, в която искаш да се запише тъмбнейла
	imagejpeg($tmp, $save_thumb, 100);
	imagedestroy($src);
	imagedestroy($tmp);
}
Тествах и си работи нормално :)

Всичко е перфекно прав си :) имам само последен въпрос защо при размеряването на картинката в формат gif ако е анимирана я прави не анимирана?
 
Не знам да ти кажа, аз когато променям размерите на анимирана картинка (използвам PhotoScape) пак така се получава. Анимацията изчезва и си остава само картинката.
 
c3c0 каза:
Не знам да ти кажа, аз когато променям размерите на анимирана картинка (използвам PhotoScape) пак така се получава. Анимацията изчезва и си остава само картинката.

Но няма ли шанс да се оправи и да си остава така без да се променя в нормално. Всъщност аз го ползвам това като аватар качват си го на моя сървър от линк :) но проблемат е там че анимираните картинки ги прее*ава
 

Back
Горе