Categories: PHP业界编程

php如何下载图片?

在php中如何使用代码快速下载图片,在下载的过程一般会遇到两个问题,1.需要翻墙,使用代理 ; 2.图片资源有跳转,如果遇到这两个问题,下载图片就会有点复杂,通常都会使用curl来实现。

一、简单图片下载

使用场景:图片url比较明确

$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));

二、curl命令下载图片

使用场景:

  • 需要代理
  • 图片链接有跳转,不能直接下载
  • 需要设置userAgent
function curl2saveimg($url, $name) {
    $image = 'images/' . $name . '.png';
    $ch = curl_init($url);
    $fp = fopen($image, 'wb');
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch,CURLOPT_TIMEOUT,10);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_PROXY, 'socks5://127.0.0.1:8080');
    if(curl_exec($ch) === false) {
        // echo 'Curl error: ' . curl_error($ch);
        echo '下载' . $url . '失败' . curl_error($ch) . PHP_EOL;
        fclose($fp);
        curl_close($ch);
        unlink($image);
        return;
    } else {
        echo '成功下载' . $url . PHP_EOL;
    }
    curl_close($ch);
    fclose($fp);
}

结论

具体使用哪种方式下载取决具体的场景,最后不要相信网上免费的代理,大概率都是不能用的。

4.8
06
iproute2和net-tools比较
linux中/etc/passwd详解
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

Clockwise一款AI日历工具

Clockwise是一款创新的…

2天 ago

Leonardo一个视觉创意AI生成平台

Leonardo.ai提供了一…

2天 ago

DupDub一款终极AI内容创作助手

DupDub 是一个一站式内容…

2天 ago

Murf AI是一款尖端的AI声音生成器

Murf AI是一款尖端的AI…

2天 ago