case 'crop_post': $x = post('x', 1); $y = post('y', 1); $w = post('w', 1); $h = post('h', 1); $img = post('img'); $isUpload = post('isUpload'); $tw = post('tw', 1); $th = post('th'); if (!filter_var($img, FILTER_VALIDATE_URL)) { echo json_encode(array(error=>1, message=>'图片地址错误')); exit(); } if ($w < 50 || $h < 50) { echo json_encode(array(error=>1, message=>'选区尺寸太小请重新选择')); exit(); } if (!$tw || !$th) { echo json_encode(array(error=>1, message=>'图片存储尺寸获取失败')); exit(); } # image.class.php 依赖 imageIck $image = loader('image'); $image->open($img); # 打开图片 $image->crop($x, $y, $w, $h, $tw, $th); # x1、y1、选区宽度、选区高度、存储宽度、存储高度 $path = $image->save(); # sae/tmp_45089/13534.gif if (!$path) { echo json_encode(array(error=>1, message=>'保存图片错误 SAE_TMP_PATH')); exit(); } $attached = loader('attached'); $attached->channel = 'thumb'; $array = $attached->write(true, $path); # write(is_path, $data or path, $new_path) //如果$img存在删除冗余图片 if ($isUpload) { $path = str_replace(ATTACHED_HOST . 'http://www.etwiki.cn/', '', $img); $attached->delete($path); } echo json_encode($array); break;
@hange 代码写得丑,大家不要见笑 , 像我这种业余选手代码能跑起来就差不多了 。
主要就是获取图片中选区的起始位置,选区大小,目标图片大小等参数,生成并保存图片后就可以把新图片的地址同步至父页面中的 thumbInput 表单元素