ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp5 の画像処理で発生した問題を解決する

thinkphp5 の画像処理で発生した問題を解決する

藏色散人
藏色散人転載
2021-05-18 16:46:433113ブラウズ

thinkphp の次のチュートリアル コラムでは、thinkphp5 の画像処理で遭遇する問題を紹介します。困っている友人の役に立てば幸いです。

#画像処理で発生した問題

画像の処理とアップロードをさらにカプセル化します。保存された画像のパスを返すクラス

画像の戻りパスと保存パスを絶対パスにすることはできません。

これにより、イメージが開かなくなります。プロジェクトおよびディレクトリに対する相対パスである必要があります。

<?php
namespace app\common\vendor;

use think\Image;
use think\Request;

class Picture
{
    public function Up($file,$type)//获取图片,验证
    {
        //处理图片
        $request=new Request();
        $saveName=$request->time().&#39;.png&#39;;
        $image=Image::open($file);
        switch($type){
            case &#39;advertise&#39;:
                $deal=$image->thumb(20,40,6);
                $link=&#39;public&#39;.DS.&#39;static&#39;.DS.&#39;picture&#39;.DS.$type.DS.$saveName.&#39;.png&#39;;
                break;
            case &#39;user&#39;:
                $deal=$image->thumb(40,40,6);
                $link=&#39;public&#39;.DS.&#39;static&#39;.DS.&#39;picture&#39;.DS.$type.DS.$saveName.&#39;.png&#39;;
                break;
        }
        //上传图片
        if($deal->save(ROOT_PATH.$link)){
            //echo $deal->width()."<br/>".$deal->height();
            return $link;
        }else{
            echo "失败";
        }
    }
}

このクラスをカプセル化した後、イメージの検証を確認する必要がありますコントローラ内


1. 画像検証中に発生した問題

私の画像検証:

    $result = $this->validate([&#39;file&#39; => $file],
        [&#39;file&#39; => &#39;require|image|fileExt:png,jpg,gif&#39;],
        [&#39;file.require&#39; => &#39;请选择上传文件&#39;,&#39;file.image&#39;=>&#39;必须是图片哦&#39;,&#39;file.fileExt&#39;=>&#39;文件格式不对&#39;]);

この検証に慣れていないため、画像で検証しましたこれらの内容の意味


その他のアップロード ファイル検証ルールには、ファイルであるかどうかを検証するための検証ルールも含まれています

ファイルobject
  • 画像かどうかを確認する画像 ファイル オブジェクト
  • image:width,height[,type] 画像ファイルの種類、幅、高さを確認します
  • fileExt :zip,doc,… ファイルのサフィックスを確認します
  • fileMime:image /png,… ファイル タイプを確認します
  • fileSize:1024 ファイル サイズを確認します
  • 2. 画像ファイルのアップロード方法

ここにファイルをアップロードします。Image: :open() で画像を開き、画像形式になります。これら 2 つは異なる形式です。

画像を処理したいので、画像を保存する前に、最初に画像を開いて処理する必要があります。

thinkphp では、画像を保存するには、Picture->save(path) を使用して保存します。

しかし、そうでない場合は、処理する必要はありません。[ファイル]->[移動(パス)]

を使用して直接保存できます。

以上がthinkphp5 の画像処理で発生した問題を解決するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。