//先创建文件夹
if(!is_dir('icon')){
if (!mkdir('icon', 0777))
return;
}
$base_size=1024;
$file_src = 'icon.png'; //源文件
$arr_size=array(20=>1, 29=>2,40=>3, 50=>1, 57=>1, 58=>2, 60=>1, 72=>1, 76=>1, 80=>2, 87=>1, 100=>1, 114=>1, 120=>2, 144=>1, 152=>1, 167=>1, 180=>1);
$img_src = imagecreatefrompng($file_src);
list($src_w, $src_h) = getimagesize($file_src);
if($src_w != 1024 || $src_h != 1024)
{
echo 'error size: $src_w, $src_h';
return;
}
foreach($arr_size as $k => $v){
$per = $k/$base_size;
$new_w = $src_w*$per;
$new_h = $src_h*$per;
$file_dst = "icon/$k.png";
$img_dst = imagecreatetruecolor($new_w, $new_h);
$c = imagecolorallocatealpha($img_dst , 0 , 0 , 0 , 127); //拾取透明
imagealphablending($img_dst , false); //关闭混合模式 透明颜色能覆盖原画布
imagefill($img_dst , 0 , 0 , $c); //填充
imagesavealpha($img_dst , true); //保存PNG时保留透明通道信息
imagecopyresampled($img_dst,$img_src, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h);
imagepng($img_dst, $file_dst);
if($v > 1){
for($i=1; $i < $v; $i++){
$file_dst = "icon/$k-$i.png";
imagepng($img_dst, $file_dst);
}
}
imagedestroy($img_dst);
}
imagedestroy($img_src);
echo 'success';