通过,有无水印图片对比,合成新的无水印高清大图
要用到 PHP 的 GD 函数相信这个一般都有
<?php
// 获取 美食天下 无水印 800px 宽度大图
function getImage($url = '', $path = false){
// 大图上 logo 大小
$logo = [130, 30];
$path = $path ? $path : __DIR__;
$url = preg_replace('#@!.*$#', '', $url);
$hash = md5($url);
// 原图与新图 路径
$originImage = $path .'/'. $hash .'.jpg';
$newImage = $path .'/'. $hash .'-new.jpg';
// 不存在原图 获取
if(!file_exists($originImage)){
$imageLarge = file_get_contents("{$url}@!p800");
if(!$imageLarge){
die('图片获取错误');
}
file_put_contents($originImage, $imageLarge);
}
// 不存在新图 获取并处理
if(!file_exists($newImage)){
$imageLarge = file_get_contents($originImage);
$imageSmall = file_get_contents("{$url}@!c320");
if(!$imageSmall){
die('图片获取错误');
}
// 图片尺寸
$largeSize = getimagesizefromstring($imageLarge);
$smallSize = getimagesizefromstring($imageSmall);
// 载入图片
$imageLarge = imagecreatefromstring($imageLarge);
$imageSmall = imagecreatefromstring($imageSmall);
// 获取缩放比例
$pct = min($largeSize[0], $largeSize[1]) / $smallSize[0];
// logo 在小图上的大小
$logo[] = $logo[0] / $pct;
$logo[] = $logo[1] / $pct;
// 复制图层 并调整大小
imagecopyresized(
$imageLarge,
$imageSmall,
($largeSize[0] - $logo[0]) / 2, ($largeSize[1] - $logo[1]) / 2,
($smallSize[0] - $logo[2]) / 2, ($smallSize[1] - $logo[3]) / 2,
$logo[0], $logo[1],
$logo[2], $logo[3]
);
// 保存处理后 图片
imagejpeg($imageLarge, $newImage);
}
}
$url = [];
$url[] = 'http://i8.meishichina.com/attachment/recipe/201111/09/201111091427436.jpg@!p800';
$url[] = 'http://i8.meishichina.com/attachment/recipe/201012/201012091256171.jpg@!p800';
$url[] = 'http://i8.meishichina.com/attachment/recipe/2013/12/04/20131204105731447727573.jpg@!p800';
$url[] = 'http://i8.meishichina.com/attachment/recipe/2017/03/15/2017031514895532871017482619.jpg@!p800';
foreach($url as $u){
getImage($u);
}