客户需求:抓取瑞文测试题目的所有图片保存到对应文件夹
客户需求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都可以
附上脚本运行结果和保存图片
,