写在前面。大家都应该知道必应搜索每天都会换首页壁纸的吧?常用都知道。都知道图片是有版权的吧?没问题。个人自用还是可以的。
这时候你需要一张 3840 * 1080 的图片,图片在那里找呢?去图片站搜索下载?确实可以,但 3840 的资源比较少,看腻了还要再去下载,实在是太麻烦了。
其实自己合成就好,用 ps 吗?不想打开,难道每天都要打开-合成-关闭? on!我是程序员,电脑长这么大了,它要学会自己下载图片更换。
电脑环境已安装 php 并加入系统环境变量
win10 找到任务计划并创建定时计划执行脚本。我这里设置的是每天执行一次
bingimg.php
// header('Content-type: image/png');
$res = json_decode(file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=10&pid=hp'), true);
if (!empty($res['images'])) {
// krsort($res['images']);
$save_path = iconv('UTF-8','GB2312', 'D:\\桌面文件\\pcbgimg\\bing\\');
// $file_count = count(scandir($save_path));
$font = __DIR__ . '/Alibaba-PuHuiTi-Regular.ttf';
// foreach ($res['images'] as $key => $val) {
$image = imagecreatefromjpeg('https://cn.bing.com' . $res['images'][0]['url']);
$image2 = imagecreatefromjpeg('https://cn.bing.com' . $res['images'][1]['url']);
$image_all = imagecreatetruecolor(3840, 1080);
$white = imagecolorallocate($image_all, 255, 255, 255);
imagecopyresampled($image_all, $image, 1920, 0, 0, 0, 1920, 1080, 1920, 1080);
imagecopyresampled($image_all, $image2, 0, 0, 0, 0, 1920, 1080, 1920, 1080);
imagettftext($image_all, 14, 0, 3840 - strlen($res['images'][0]['copyright']) * 8.5, 28, $white, $font, $res['images'][0]['copyright']);
imagettftext($image_all, 14, 0, 1920 - strlen($res['images'][1]['copyright']) * 8.5, 28, $white, $font, $res['images'][1]['copyright']);
imagejpeg($image_all, $save_path . $res['images'][1]['startdate'] . '-' . $res['images'][0]['startdate'] . '.jpeg');
// imagejpeg($image_all);
imagedestroy($image_all);
// $file_count += 1;
// }
}
把保存图片的文件夹设为背景幻灯片
什么?你觉得这个不够装? 希望是视频或动态图片?
完成啦,带上 javascript 合并方法
function drawAndShareImage(url, url2){
let ctx = document.createElement('canvas').getContext('2d');
ctx.canvas.width = 3840;
ctx.canvas.height = 1080;
let img = new Image();
img.src = url;
img.crossOrigin = 'Anonymous';
img.onload = function(){
ctx.drawImage(img, 0, 0);
let img2 = new Image();
img2.src = url2;
img2.crossOrigin = 'Anonymous';
img2.onload = function(){
ctx.drawImage(img2, 1920, 0);
document.body.parentNode.replaceChild(ctx.canvas, document.body);
}
}
}