gpt4 book ai didi

php获取远程图片并下载保存到本地的方法分析

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php获取远程图片并下载保存到本地的方法分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了php获取远程图片并下载保存到本地的方法。分享给大家供大家参考,具体如下:

远程图片指的是远端服务器上的数据我们可以通过php的许多函数来读取下载了,这里整理了两个可以自动下载远程图片并下载保存到本地的例子.

例1,可以自动识别图片类型然后进行对应的保存 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/
function getImage( $url , $save_dir = '' , $filename = '' , $type =0){
   if (trim( $url )== '' ){
  return array ( 'file_name' => '' , 'save_path' => '' , 'error' =>1);
  }
  if (trim( $save_dir )== '' ){
  $save_dir = './' ;
  }
   if (trim( $filename )== '' ){ //保存文件名
     $ext = strrchr ( $url , '.' );
     if ( $ext != '.gif' && $ext != '.jpg' ){
   return array ( 'file_name' => '' , 'save_path' => '' , 'error' =>3);
  }
     $filename =time(). $ext ;
   }
  if (0!== strrpos ( $save_dir , '/' )){
  $save_dir .= '/' ;
  }
  //创建保存目录
  if (! file_exists ( $save_dir )&&! mkdir ( $save_dir ,0777,true)){
  return array ( 'file_name' => '' , 'save_path' => '' , 'error' =>5);
  }
   //获取远程文件所采用的方法
   if ( $type ){
  $ch =curl_init();
  $timeout =5;
  curl_setopt( $ch ,CURLOPT_URL, $url );
  curl_setopt( $ch ,CURLOPT_RETURNTRANSFER,1);
  curl_setopt( $ch ,CURLOPT_CONNECTTIMEOUT, $timeout );
  $img =curl_exec( $ch );
  curl_close( $ch );
   } else {
    ob_start();
    readfile( $url );
    $img =ob_get_contents();
    ob_end_clean();
   }
   //$size=strlen($img);
   //文件大小
   $fp2 =@ fopen ( $save_dir . $filename , 'a' );
   fwrite( $fp2 , $img );
   fclose( $fp2 );
  unset( $img , $url );
   return array ( 'file_name' => $filename , 'save_path' => $save_dir . $filename , 'error' =>0);
}

例2,如果不是图片会自动跳过 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
function GrabImage( $url , $filename = "" ) {
  if ( $url == "" ): return false;
  endif ;
  //如果$url地址为空,直接退出
  if ( $filename == "" ) {
  //如果没有指定新的文件名
  $ext = strrchr ( $url , "." );
  //得到$url的图片格式
  if ( $ext != ".gif" && $ext != ".jpg" ): return false;
  endif ;
  //如果图片格式不为.gif或者.jpg,直接退出
  $filename = date ( "dMYHis" ) . $ext ;
  //用天月面时分秒来命名新的文件名
  }
  ob_start(); //打开输出
  readfile( $url ); //输出图片文件
  $img = ob_get_contents(); //得到浏览器输出
  ob_end_clean(); //清除输出并关闭
  $size = strlen ( $img ); //得到图片大小
  $fp2 = @ fopen ( $filename , "a" );
  fwrite( $fp2 , $img ); //向当前目录写入图片文件,并重新命名
  fclose( $fp2 );
  return $filename ; //返回新的文件名
}
$img = GrabImage( "http://www.zzvips.com /6648d73db0edd1e89f3d62f7.jpg" , "" );
if ( $img ): echo '<pre><img src="' . $img . '"></pre>' ;
//如果返回值为真,这显示已经采集到服务器上的图片
else : echo "false" ;
endif ;
//否则,输出采集失败
?>

其实上面的下载方式小编最喜欢的不是这两个而是curl保存异步下载图片会比较好.

希望本文所述对大家PHP程序设计有所帮助.

最后此篇关于php获取远程图片并下载保存到本地的方法分析的文章就讲到这里了,如果你想了解更多关于php获取远程图片并下载保存到本地的方法分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com