ホームページ > バックエンド開発 > PHPチュートリアル > PHP はさまざまなサイズのアプリ ロゴのバッチ生成を実装します。phpapp サイズ logo_PHP チュートリアル

PHP はさまざまなサイズのアプリ ロゴのバッチ生成を実装します。phpapp サイズ logo_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:02:06
オリジナル
1157 人が閲覧しました

PHPは、さまざまなサイズのアプリロゴ、phpappサイズのロゴのバッチ生成を実現します

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);休憩;
                case "gif" : $watermark = imagecreatefromgif($mark);  休憩;
                case "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;休憩;
                case "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);
}
return $error;
}
パブリック関数 ext() {
戻る $this->ext;
}
}

この記事で説明した内容は以上です。皆さんに気に入っていただければ幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/970864.html技術記事 PHPでは様々なサイズのアプリロゴを一括生成できます。phpappサイズのロゴはワンクリックで簡単に様々なサイズにカットしてダウンロードできます。アイコンを頻繁に変更する方法を知っているなら、アーティストが 1024 個のアイコンをくれるでしょう...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート