php Curl保存远程服务器图片
<?php function LoadImageCURL($save_to) { $ch = curl_init($this->source); $fp = fopen($save_to, "wb"); // set URL and other appropriate options $options = array( CURLOPT_FILE => $fp, CURLOPT_HEADER => 0, CURLOPT_FOLLOWLOCATION => 1, // 1 minute timeout (should be enough) CURLOPT_TIMEOUT => 60 ); curl_setopt_array($ch, $options); curl_exec($ch); curl_close($ch); fclose($fp); } $info = @GetImageSize($this->source); $mime = $info['mime']; // What sort of image? $type = substr(strrchr($mime, '/') , 1); switch ($type) { case 'jpeg': $image_create_func = 'ImageCreateFromJPEG'; $image_save_func = 'ImageJPEG'; $new_image_ext = 'jpg'; // Best Quality: 100 $quality = isSet($this->quality) ? $this->quality : 100; break; case 'png': $image_create_func = 'ImageCreateFromPNG'; $image_save_func = 'ImagePNG'; $new_image_ext = 'png'; // Compression Level: from 0 (no compression) to 9 $quality = isSet($this->quality) ? $this->quality : 0; break; case 'bmp': $image_create_func = 'ImageCreateFromBMP'; $image_save_func = 'ImageBMP'; $new_image_ext = 'bmp'; break; case 'gif': $image_create_func = 'ImageCreateFromGIF'; $image_save_func = 'ImageGIF'; $new_image_ext = 'gif'; break; case 'vnd.wap.wbmp': $image_create_func = 'ImageCreateFromWBMP'; $image_save_func = 'ImageWBMP'; $new_image_ext = 'bmp'; break; case 'xbm': $image_create_func = 'ImageCreateFromXBM'; $image_save_func = 'ImageXBM'; $new_image_ext = 'xbm'; break; default: $image_create_func = 'ImageCreateFromJPEG'; $image_save_func = 'ImageJPEG'; $new_image_ext = 'jpg'; } if (isSet($this->set_extension)) { $ext = strrchr($this->source, "."); $strlen = strlen($ext); $new_name = basename(substr($this->source, 0, -$strlen)) . '.' . $new_image_ext; } else { $new_name = basename($this->source); } $save_to = $this->save_to . "/blog_insert_temp_" . time() . mt_rand(1, 99) . "." . $new_image_ext; //输出对象 组成跟$_FILE变量一样 得到后自己和平常图片上传处理一样了 $img_info['name'] = basename($this->source); $img_info['type'] = $mime; $img_info['size'] = 1000; $img_info['tmp_name'] = $save_to; $img_info['error'] = 0; if ($method == 'curl') { $save_image = $this->LoadImageCURL($save_to); } elseif ($method == 'gd') { $img = $image_create_func($this->source); if (isSet($quality)) { $save_image = $image_save_func($img, $save_to, $quality); } else { $save_image = $image_save_func($img, $save_to); } } var_dump($img_info);
本文地址:http://www.phprm.com/code/curl.html
转载随意,但请附上文章地址:-)