图片压缩\验证远程图片是否真实存在

32F  2018/10/24 php



这是以前写的内容,搬运至此,仅作记录参考


图片压缩

//图片压缩
<?php
if(file_exists($file_path)){
    if(abs(filesize($file_path)) > 300000){
        $pic1 = imagecreatefromstring(file_get_contents($file_path));
        List($w,$h) = getimagesize($file_path);//原图宽高
        $small_w = $w / 10 ;//压缩后的宽度
        $small_h = $h / 10;//压缩后的高度
        $small_w = $small_w > 403.2 ? $small_w : 403.2 ;
        $small_h = $small_h > 302.4 ? $small_h : 302.4 ;
        $bl = imagecreatetruecolor($small_w,$small_h);
        imagecopyresampled($bl, $pic1, 0, 0, 0, 0, $small_w,$small_h, $w, $h);
        imagepng($bl,$compress_file_path);
    }else{}
}else{}

验证远程图片是否存在

<?php
//验证远程图片是否存在
//首先部分远程图片域名目录都存在,但是不存在指定图片,但是curl后依然是返回true,
//用浏览器第一次打开后status code是200(from cache),刷新后才返回304
//所以代码为了验证图片是否存在需要做进一步处理,我们验证的是图片,所以检测对应url的content_type即可
//另外我开始用的是@fopen(file,'r'),也是返回true,所以现在我用的只有这个办法        
$ch = curl_init($compress_pic);
curl_setopt($ch, CURLOPT_NOBODY, true);
$result = curl_exec($ch);
if ($result !== false) {
$url_info = curl_getinfo($ch);
if($url_info['content_type'] == 'image/jpeg'){
return $compress_pic;
}else{
return $orig_pic;
}
curl_close($ch);
}else{
return $orig_pic;
}

添加评论
全部回复
暂无回复