PHP GD を使用し、使いやすく、ワンクリックでさまざまなサイズにカットし、パッケージ化してダウンロードします。アイコンを頻繁に変更する人は知っていると思いますが、アーティストから 1024 のロゴが提供され、それをフォトショップでさまざまなサイズに変換する必要があるため、このようなものを思いつきました。
クラスイメージ{
/**
*出典画像
*
* @var 文字列|配列
*/
プライベート $source;
/**
*一時的な画像
*
* @var ファイル
*/
プライベート $image;
プライベート $ext;
/**
* エラー
*
* @var 配列
*/
プライベート $error;
/**
* 構築します
*
* @param 文字列|配列 $source
*/
パブリック関数 __construct($source = NULL) {
if($source != NULL) {
$this->source($source);
}
}
/**
*ソース画像を設定します
*
* @param 文字列|配列 $source
*/
パブリック関数ソース($source) {
if(!is_array($source)) {
$this->source["name"] = $source;
$this->source["tmp_name"] = $source;
$type = NULL;
$ext = strto lower(end(explode(".",$source)));
スイッチ($ext) {
ケース「jpg」:
case "jpeg" : $type = "画像/jpeg";休憩;
case "gif" : $type = "image/gif"; 休憩;
case "png" : $type = "image/png"; 休憩;
}
$this->source["type"] = $type;
} その他 {
$this->source = $source;
}
$this->destination = $this->source["name"];
}
/**
*画像のサイズを変更します
*
* @param int $width
* @param int $height
*/
パブリック関数リサイズ($width = NULL,$height = NULL) {
if(isset($this->source["tmp_name"]) && file_exists($this->source["tmp_name"])) {
list($source_width,$source_height) = getimagesize($this->source["tmp_name"]);
if(($width == NULL) && ($height != NULL)) {
$width = ($source_width * $height) / $source_height;
}
if(($width != NULL) && ($height == NULL)) {
$height = ($source_height * $width) / $source_width;
}
if(($width == NULL) && ($height == NULL)) {
$width = $source_width;
$height = $source_height;
}
switch($this->source["type"]) {
case "image/jpeg" : $created = imagecreatefromjpeg($this->source["tmp_name"]); 休憩;
case "image/gif" : $created = imagecreatefromgif($this->source["tmp_name"]); 休憩;
case "image/png" : $created = imagecreatefrompng($this->source["tmp_name"]); 休憩;
}
$this->image = imagecreatetruecolor($width,$height);
imagecopyresampled($this->image,$created,0,0,0,0,$width,$height,$source_width,$source_height);
}
}
/**
* 画像に透かしを追加します
*
* @param 文字列 $mark
* @param int $opac
* @param int $x_pos
* @param int $y_pos
*/
パブリック関数ウォーターマーク($mark,$opac,$x_pos,$y_pos) {
if(file_exists($mark) && ($this->image != "")) {
$ext = strto lower(end(explode(".",$mark)));
スイッチ($ext) {
ケース「jpg」:
ケース "jpeg" : $watermark = imagecreatefromjpeg($mark);休憩;
ケース "gif" : $watermark = imagecreatefromgif($mark); 休憩;
ケース "png" : $watermark = imagecreatefrompng($mark); 休憩;
}
list($watermark_width,$watermark_height) = getimagesize($mark);
$source_width = 画像x($this->画像);
$source_height = imagey($this->image);
if($x_pos == "トップ") $pos = "t"; else $pos = "b";
if($y_pos == "左") $pos .= "l"; else $pos .= "r";
$dest_x = 0;
$dest_y = 0;
スイッチ($pos) {
case "tr" : $dest_x = $source_width - $watermark_width;休憩;
ケース "bl" : $dest_y = $source_height - $watermark_height;休憩;
ケース "br" : $dest_x = $source_width - $watermark_width; $dest_y = $source_height - $watermark_height; 休憩;
}
imagecopymerge($this->image,$watermark,$dest_x,$dest_y,0,0,$watermark_width,$watermark_height,$opac);
}
}
/**
*画像をトリミングします
*
* @param int $x
* @param int $y
* @param int $width
* @param int $height
*/
パブリック関数 Crop($x,$y,$width,$height) {
if(isset($this->source["tmp_name"]) && file_exists($this->source["tmp_name"]) && ($width > 10) && ($height > 10)) {
switch($this->source["type"]) {
case "image/jpeg" : $created = imagecreatefromjpeg($this->source["tmp_name"]);休憩;
case "image/gif" : $created = imagecreatefromgif($this->source["tmp_name"]); 休憩;
case "image/png" : $created = imagecreatefrompng($this->source["tmp_name"]); 休憩;
}
$this->image = imagecreatetruecolor($width,$height);
imagecopy($this->image,$created,0,0,$x,$y,$width,$height);
}
}
/**
* 最終的なイメージファイルを作成します
*
* @param string $destination
* @param int $quality
*/
パブリック関数 create($destination,$quality = 100) {
if($this->image != "") {
$extension = substr($destination,-3,3);
スイッチ($extension) {
ケース "gif" :
imagegif($this->image,$destination,$quality);
休憩;
ケース「png」:
$quality = ceil($quality/10) - 1;
imagepng($this->image,$destination,$quality);
休憩;
デフォルト:
imagejpeg($this->image,$destination,$quality);
休憩;
}
}
}
/**
* 拡張機能が有効かどうかを確認してください
*
*/
パブリック関数 validate_extension() {
if(isset($this->source["tmp_name"]) && file_exists($this->source["tmp_name"])) {
$exts = array("image/jpeg", "image/pjpeg", "image/png", "image/x-png");
$ext = $this->source["type"];
$有効 = 0;
$this->ext = '.not_found';
if ($ext == $exts[0] || $ext == $exts[1]) {
$有効 = 1;
$this->ext = '.jpg';
}
// if ($ext == $exts[2]) {
// $valid = 1;
// $this->ext = '.gif';
// }
if ($ext == $exts[2] || $ext == $exts[3]) {
$有効 = 1;
$this->ext = '.png';
}
if($valid != 1) {
$this->error .= "拡張子";
}
} その他 {
$this->error .= "ソース";
}
}
/**
*サイズが正しいかどうかを確認してください
*
* @param int $max
*/
パブリック関数 validate_size($max) {
if(isset($this->source["tmp_name"]) && file_exists($this->source["tmp_name"])) {
$max = $max * 1024;
if($this->source["size"] >= $max) {
$this->error .= "サイズ";
}
} その他 {
$this->error .= "ソース";
}
}
/**
*寸法が正しいかどうかを確認してください
*
* @param int $limit_width
* @param int $limit_height
*/
パブリック関数 validate_dimension($limit_width,$limit_height) {
if(isset($this->source["tmp_name"]) && file_exists($this->source["tmp_name"])) {
list($source_width,$source_height) = getimagesize($this->source["tmp_name"]);
if(($source_width > $limit_width) || ($source_height > $limit_height)) {
$this->error .= "ディメンション";
}
} その他 {
$this->error .= "ソース";
}
}
/**
* 見つかったエラーを取得します
*
*/
パブリック関数 error() {
$error = array();
if(stristr($this->error,"source")) $error[] = "找不到達上传文件";
if(stristr($this->error,"dimension")) $error[] = "上传图片尺寸太大";
if(stristr($this->error,"extension")) $error[] = "不符合要求的格式";
if(stristr($this->error,"size")) $error[] = "图片文件太大";
$error を返します;
}
パブリック関数 error_string() {
$error = "";
if(stristr($this->error,"source")) $error .= "找不到達上传文件 / ";
if(stristr($this->error,"dimension")) $error .= "上传图片尺寸太大 / ";
if(stristr($this->error,"extension")) $error .= "不符合要求的格式 / ";
if(stristr($this->error,"size")) $error .= "图片文件太大 / ";
if(エレギ(" / $", $error)) {
$error = substr($error, 0, -3);
}
$error を返します;
}
パブリック関数 ext() {
$this->ext;を返す
}
}
以上が本明細書に記載されている内容のすべてです。多くの方にご満足いただけることを願っております。
http://www.bkjia.com/PHPjc/970749.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/970749.html技術記事 PHP は、さまざまなサイズのアプリ ロゴのバッチ生成を実装します。この記事では、さまざまなサイズのアプリ ロゴのバッチ生成の PHP 実装のコア コードを中心に紹介します。非常に簡単で実用的です。