客户需求:抓取瑞文测试题目的所有图片保存到对应文件夹
客户需求2:选择答案的题目图片后裁剪掉图片的左右部分
知识点:抓取图片---》循环抓取---》保存图片---》新建文件夹---》新建图片
难点:裁剪图片
裁剪图片代码网上百度搜索了一个,不求甚解,但能用
function tailoringImg($file_path, $save_width, $start_spot_x, $start_spot_y, $width, $height, $display = 1)
{
if (file_exists($file_path) && is_readable($file_path)) {
//从字符串中的图像流新建一图像
$src = imagecreatefromstring(file_get_contents($file_path));
//保存图片的高
$save_height = round($save_width * $height / $width);
//根据要保存的宽和高创建图片
$new_image = imagecreatetruecolor($save_width, $save_height);
//生成最后的图片
// dst_image 目标图象连接资源。
//src_image 源图象连接资源。
//dst_x 目标 X 坐标点。
//dst_y 目标 Y 坐标点。
//src_x 源的 X 坐标点。
//src_y 源的 Y 坐标点。
//dst_w 目标宽度。
//dst_h 目标高度。
//src_w 源图象的宽度。
//src_h 源图象的高度。
imagecopyresampled($new_image, $src, 0, 0, $start_spot_x, $start_spot_y, $save_width, $save_height, $width, $height);
//header('Content-Type: image/jpeg');
imagejpeg($new_image, $file_path, 80);
imagedestroy($src);
imagedestroy($new_image);
}
}
保存图片代码,自己写了两个方法
function curlGet($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERifYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36');
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$content = curl_exec($ch);
curl_close($ch);
return ($content);
}
function save_img($key,$img){
$dir2 = "./images/".$key;
if(!is_dir($dir2)){
mkdir($dir2);
}
!file_exists($dir2."/0.png")?file_put_contents($dir2."/0.png",curlGet($img)):"";
}
function save_img2($key,$key2,$img){
$dir2 = "./images/".$key;
if(!is_dir($dir2)){
mkdir($dir2);
}
$file = $dir2."/".$key2.".png";
!file_exists($file)?file_put_contents($file,curlGet($img)):"";
tailoringImg($file,170,130,12,310,170);
}
循环部分
for($i=1;$i<73;$i ){
//https://iqeq.com.cn/imgxin/rwtu/rw-timu1.png 题目格式
//https://iqeq.com.cn/imgxin/rwtu/rw-timu1-op1.png 选项格式
$url = "https://iqeq.com.cn/imgxin/rwtu/rw-timu".$i.".png";
echo $url;
save_img($i,$url);
$max = 7;
if($i>36)$max=9;
for($j=1;$j<$max;$j ){
$url = "https://iqeq.com.cn/imgxin/rwtu/rw-timu".$i."-op".$j.".png";
echo $url;
save_img2($i,$j,$url);
}
}
总结一下
确实难点都是要百度一下的,毕竟这种定制化项目时间成本是第一位的,解决问题的方法千千万,代码好坏没那么重要,解决问题的速度和时间成本才是关键,除非大厂愿意给足够的时间和人员去发明轮子,大部分程序员解决问题的思路肯定是百度优先,然后解决问题在回头思考总结,没时间总结就不总结了。。。
我个人在自己写前后端,欢迎各位老板有需求找我,php或者vue,java或者react都可以
附上脚本运行结果和保存图片
,