Home  >  Article  >  Backend Development  >  PHP script to generate Icon of various sizes with one click

PHP script to generate Icon of various sizes with one click

WBOY
WBOYOriginal
2016-08-08 09:23:54988browse
<?php
/**
* @name	thumb 	缩略图函数
* @param	sting	$img_name	图片路径
* @param	int		$max_width	略图最大宽度
* @param	int		$max_height	略图最大高度
* @param	sting	$suffix 略图后缀(如"img_x.jpg"代表小图,"img_m.jpg"代表中图,"img_l.jpg"代表大图)
* @return	void
*/
function thumb($img_name,$max_width,$max_height,$path,$new_name)
{
	$img_infos = getimagesize($img_name);
	$img_height = $img_infos[0];//图片高
	$img_width = $img_infos[1];	//图片宽
	$img_extension = &#39;&#39;;		//图片后缀名

	switch($img_infos[2])
	{
		case 1:
			$img_extension = &#39;gif&#39;;
			break;
		case 2:
			$img_extension = &#39;jpeg&#39;;
			break;
		case 3:
			$img_extension = &#39;png&#39;;
			break;
		default:
			$img_extension = &#39;jpeg&#39;;
			break;
	}

	$new_img_size = array();
	$new_img_size[&#39;width&#39;] = $max_width;
	$new_img_size[&#39;height&#39;] = $max_height;
	
	$img_func = &#39;&#39;;		//函数名称
	$img_handle = &#39;&#39;;	//图片句柄
	$thum_handle = &#39;&#39;;	//略图图片句柄

	switch($img_extension)
	{
		case &#39;jpg&#39;:
			$img_handle = imagecreatefromjpeg($img_name);
			$img_func = &#39;imagejpeg&#39;;
			break;
		case &#39;jpeg&#39;:
			$img_handle = imagecreatefromjpeg($img_name);
			$img_func = &#39;imagejpeg&#39;;
			break;
		case &#39;png&#39;:
			$img_handle = imagecreatefrompng($img_name);
			imagesavealpha($img_handle, true);
			$img_func = &#39;imagepng&#39;;
			break;
		case &#39;gif&#39;:
		 	$img_handle = imagecreatefromgif($img_name);
			$img_func = &#39;imagegif&#39;;
			break;
		default:
			$img_handle = imagecreatefromjpeg($img_name);
			$img_func = &#39;imagejpeg&#39;;
			break;
	}

	$quality = 100;//图片质量
	if($img_func == &#39;imagepng&#39;)
	{
		$quality = 9;
	} 

	$thum_handle = imagecreatetruecolor($new_img_size[&#39;height&#39;],$new_img_size[&#39;width&#39;]);
	imagealphablending($thum_handle,false);//这里很重要,意思是不合并颜色,直接用$img图像颜色替换,包括透明色;
    imagesavealpha($thum_handle,true);//这里很重要,意思是不要丢了$thumb图像的透明色;

	if(function_exists(&#39;imagecopyresampled&#39;))
	{
		imagecopyresampled($thum_handle,$img_handle, 0, 0, 0, 0,$new_img_size[&#39;height&#39;],$new_img_size[&#39;width&#39;],$img_height,$img_width);
	} 
	else 
	{
		imagecopyresized($thum_handle,$img_handle, 0, 0, 0, 0,$new_img_size[&#39;height&#39;],$new_img_size[&#39;width&#39;],$img_height,$img_width);
	}

    call_user_func_array($img_func,array($thum_handle,$path.&#39;/&#39;.$new_name,$quality));
	imagedestroy($thum_handle);//清除句柄
    imagedestroy($img_handle);//清除句柄
}


$IconArray = array 
(
	"IOS8" => array 
	(
		array("width" => 180, 	"height"=> 180, 	"path"=>"ios8", 		"name"=>"Icon-180.png"),
		array("width" => 120, 	"height"=> 120, 	"path"=>"ios8", 		"name"=>"Icon-120.png"),
		array("width" => 152, 	"height"=> 152, 	"path"=>"ios8", 		"name"=>"Icon-152.png"),
		array("width" => 76, 	"height"=> 76, 		"path"=>"ios8", 		"name"=>"Icon-76.png"),	
		array("width" => 144, 	"height"=> 144, 	"path"=>"ios8", 		"name"=>"Icon-144.png"),
		array("width" => 72, 	"height"=> 72, 		"path"=>"ios8", 		"name"=>"Icon-72.png"),
		array("width" => 114, 	"height"=> 114, 	"path"=>"ios8", 		"name"=>"Icon-114.png"),
		array("width" => 57, 	"height"=> 57, 		"path"=>"ios8", 		"name"=>"Icon-57.png"),	
		array("width" => 100, 	"height"=> 100, 	"path"=>"ios8", 		"name"=>"Icon-100.png"),
		array("width" => 50, 	"height"=> 50, 		"path"=>"ios8", 		"name"=>"Icon-50.png"),	
		array("width" => 80, 	"height"=> 80, 		"path"=>"ios8", 		"name"=>"Icon-80.png"),
		array("width" => 40, 	"height"=> 40, 		"path"=>"ios8", 		"name"=>"Icon-40.png"),
		array("width" => 58, 	"height"=> 58, 		"path"=>"ios8", 		"name"=>"Icon-58.png"),
		array("width" => 29, 	"height"=> 29, 		"path"=>"ios8", 		"name"=>"Icon-29.png"),
	),
	"IOS" => array 
	(
		array("width" => 180, 	"height"=> 180, 	"path"=>"ios", 		"name"=>"Icon-60@3x.png"),
		array("width" => 120, 	"height"=> 120, 	"path"=>"ios", 		"name"=>"Icon-60@2x.png"),
		array("width" => 152, 	"height"=> 152, 	"path"=>"ios", 		"name"=>"Icon-76@2x.png"),
		array("width" => 76, 	"height"=> 76, 		"path"=>"ios", 		"name"=>"Icon-76.png"),	
		array("width" => 144, 	"height"=> 144, 	"path"=>"ios", 		"name"=>"Icon-72@2x.png"),
		array("width" => 72, 	"height"=> 72, 		"path"=>"ios", 		"name"=>"Icon-72.png"),
		array("width" => 114, 	"height"=> 114, 	"path"=>"ios", 		"name"=>"Icon-57@2x.png"),
		array("width" => 57, 	"height"=> 57, 		"path"=>"ios", 		"name"=>"Icon-57.png"),	
		array("width" => 100, 	"height"=> 100, 	"path"=>"ios", 		"name"=>"Icon-50@2x.png"),
		array("width" => 50, 	"height"=> 50, 		"path"=>"ios", 		"name"=>"Icon-50.png"),	
		array("width" => 80, 	"height"=> 80, 		"path"=>"ios", 		"name"=>"Icon-40@2x.png"),
		array("width" => 40, 	"height"=> 40, 		"path"=>"ios", 		"name"=>"Icon-40.png"),
		array("width" => 58, 	"height"=> 58, 		"path"=>"ios", 		"name"=>"Icon-29@2x.png"),
		array("width" => 29, 	"height"=> 29, 		"path"=>"ios", 		"name"=>"Icon-29.png"),
	)
	,
	"ANDROID" => array
	(
		array("width" => 144, 	"height" => 144, 	"path" => "android/drawable", 			"name"=>"icon.png"),
		array("width" => 144, 	"height" => 144, 	"path" => "android/drawable-xhdpi", 	"name"=>"icon.png"),
		array("width" => 72, 	"height" => 72, 	"path" => "android/drawable-hdpi", 		"name"=>"icon.png"),
		array("width" => 48, 	"height" => 48, 	"path" => "android/drawable-mdpi", 		"name"=>"icon.png"),
		array("width" => 32, 	"height" => 32, 	"path" => "android/drawable-ldpi", 		"name"=>"icon.png")
	)
);


foreach ($IconArray["IOS8"] as $key => $IconType) 
{
	thumb("icon.png",$IconType['width'],$IconType['height'],$IconType['path'],$IconType['name']);
}

foreach ($IconArray["IOS"] as $key => $IconType) 
{
	thumb("icon.png",$IconType['width'],$IconType['height'],$IconType['path'],$IconType['name']);
}

foreach ($IconArray["ANDROID"] as $key => $IconType) 
{
	thumb("icon.png",$IconType['width'],$IconType['height'],$IconType['path'],$IconType['name']);
}

?>

Usage: php IconMaster.php

The above has introduced the PHP script to generate Icon of various sizes with one click, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn