欢迎光临
我们一直在努力

php7.3-利用curl_init函数下载图片保存到本地

前几天写过一文章,介绍通过获取网页html代码,然后正则出图片的链接地址的文章php7.3-正则提取网页中所有图片的url地址,文章只介绍了怎么提取图片的URL地址,今天就再写一下获取到图片URL地址后怎么下载图片保存到本地过程。

我搜索了下我的博客,发现原来写过一类似文章,只是介绍的比较简单php7.3.2-分享一个远程下载(采集)图片的函数,咱今天就先忽略此文章,详细的介绍下远程下载图片保存到本地的过程。

我们获取到一个图片的URL后,我们要先分析下这个图片的格式,也就是什么格式的图片,长见图片格式有,jpg、gif、png等。在正则提取网页图片的URL的地址的文章中,我们在最后的数组中,可以直接获取到每一张图片的格式,今天我们拿一张图片的URL做例子,那只有通过正则来获取这个URL链接的图片格式;

  • 提取图片的格式;
$url='https://img.rsyncd.net/wp-content/themes/dux/img/logo.png';
preg_match('/https:\/\/blog\.qzze\.com\/wp-content\/themes\/dux\/img\/((.*?)(\.(jpg|gif|png)?))/i',$url,$image);
print_r($image);
//打印结果
Array
(
    [0] => https://www.rsyncd.net/wp-content/themes/dux/img/logo.png
    [1] => logo.png
    [2] => logo
    [3] => .png
    [4] => png
)

上方代码,我们提取到了图片的名称,图片的格式,方便我们下载图片时使用。

下面是完整的代码,其实和远程获取html基本上一样,只不过最后要把数据保存成图片罢了,图片名称可以写成时间,方便区分图片,当然也可以直接定义成字符串,$image[3]是网页后缀名称。下面是完整的代码

<?php
$url='https://img.rsyncd.net/wp-content/themes/dux/img/logo.png';
preg_match('/https:\/\/blog\.qzze\.com\/wp-content\/themes\/dux\/img\/((.*?)(\.(jpg|gif|png)?))/i',$url,$image);
//print_r($image);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$file_content = curl_exec($ch);
curl_close($ch);
//保存到本地的图片名称
$file=date('YmdHis');
//图片保存路径
$images_file='images/'.$file.$image[3];
$downloaded_file = fopen($images_file, 'w');
fwrite($downloaded_file, $file_content);
fclose($downloaded_file);

下载图片的关键是后缀一定不要搞错了,大家有什么不明白的,可以在下面留言给我。

赞(0) 打赏
原创文章转载请注明出处:爱编程 » php7.3-利用curl_init函数下载图片保存到本地
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

爱编程、一个运维兼程序员的博客!

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏