| Autor | Zpráva | ||
|---|---|---|---|
| lopikol Profil |
#1 · Zasláno: 23. 9. 2011, 10:47:46
Potřeboval bych poradit, jak to udělat, Jde mi o to, že uživatel vezme url obrázku a ten se uloží na daný server.
Zkoušel jsem file_get_contents, readfile , ale stále jsem nepřišel na to, že jak ho uložit na svůj server. Např, když zadám tuto url http://img.csfd.cz/posters/22/228783_1.jpg |
||
| Medvídek Profil |
#2 · Zasláno: 23. 9. 2011, 10:54:08
lopikol:
Třeba nějak takto:
<?php
function download_img($from, $dir = '', $max_width = 0, $max_height = 0, $tmp_dir = ''){
$accept_type = array(
'image/gif' => 'gif',
'image/png' => 'png',
'image/jpeg' => 'jpg',
'image/pjpeg' => 'jpg',
'image/jpg' => 'jpg'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, rawurldecode($from));
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
$img_data = curl_exec($curl);
curl_close($curl);
$return = false;
if ($img_data != ''){
if (mb_substr($tmp_dir, mb_strlen($tmp_dir) - 1) != '/' && $tmp_dir != '') $tmp_dir .= '/';
$tmp_file = md5($tmp_dir.$from).'.tmp';
$f = fopen($tmp_file, 'wb');
fwrite($f, $img_data);
fclose($f);
unset($img_data);
$img_info = getimagesize($tmp_file);
if (array_key_exists($img_info['mime'], $accept_type)){
$ext = $accept_type[$img_info['mime']];
if (mb_substr($dir, mb_strlen($dir) - 1) != '/' && $dir != '') $dir .= '/';
$to = $dir.md5($from).'.'.$ext;
if ($max_width > 0 || $max_height > 0){
list($width, $height) = $img_info;
if ($width > $max_width || $height > $max_height){
switch ($ext){
case 'gif':
$imgsrc = imagecreatefromgif($tmp_file);
break;
case 'png':
$imgsrc = imagecreatefrompng($tmp_file);
break;
case 'jpg':
$imgsrc = imagecreatefromjpeg($tmp_file);
break;
}
$imgratio = $width / $height;
if ($imgratio > 1){
$new_width = $max_width;
$new_height = $max_width / $imgratio;
} else {
$new_height = $max_width;
$new_width = $max_width * $imgratio;
}
$newimg = imagecreatetruecolor($new_width, $new_height);
if ($ext == 'gif' || $ext == 'png'){
$bgcolor = imagecolorallocate($newimg, 255, 255, 255);
imagefill($newimg, 0, 0, $bgcolor);
imagecolortransparent($newimg, $bgcolor);
}
imagecopyresampled($newimg, $imgsrc, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if (file_exists($to)) unlink($to);
switch ($ext){
case 'gif':
$imgsrc = imagegif($newimg, $to);
break;
case 'png':
$imgsrc = imagepng($newimg, $to);
break;
case 'jpg':
$imgsrc = imagejpeg($newimg, $to, 90);
break;
}
$return = array(
'file' => $to,
'width' => $width,
'height' => $height,
'type' => $img_info['mime']
);
}
} else {
copy($tmp_file, $to);
}
}
unlink($tmp_file);
}
return $return;
}
/*
Použití:
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', 'images', 300, 300, 'temp');
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', 'images', 300, 300);
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', 'images');
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', '', 0, 0, 'temp');
$newimg = download_img('http://localhost/et.jpg');
*/
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', '', 300, 300);
print_r($newimg);
|
||
| lopikol Profil |
#3 · Zasláno: 23. 9. 2011, 11:29:12
Díky za tu funkci, ale výsledkem je bílá stránka :(
|
||
| Stano Profil |
#4 · Zasláno: 23. 9. 2011, 18:42:33
a čo iné očakávaš od funkcie, ktorá vyhľadá obrázok na nete a uloží ho na server?
|
||
| Medvídek Profil |
#5 · Zasláno: 23. 9. 2011, 20:14:14 · Upravil/a: Medvídek
|
||
|
Časová prodleva: 15 let
|
|||
0