2

ユーザーがプロフィール写真を自分の PC に保存してからサーバーにアップロードするのではなく、外部 URL から画像として設定できる機能を自分のサイトに追加しようとしています。

これは私がこれまでに思いついたものです:

            $filename = $inputs['image_url'];

            if(getimagesize($filename)){
                // Get new dimensions
                list($width, $height) = getimagesize($filename);
                $new_width = 100;
                $new_height = 100;

                // Resample
                $image_p = imagecreatetruecolor($new_width, $new_height);                                           

                //a check needs to be done here $image = imagecreatefromjpeg($filename);
                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

                $filename = "profile_pictures/". md5( uniqid(rand(),true) ).".jpg";

                imagejpeg($image_p,$filename,100);
            }else{
                echo 'This is not an image';
            }

コードは .jpg 画像を正常にダウンロードできますが、他のファイル タイプもサポートしたいと考えています。

別のファイルタイプで他の画像を保存できるように、画像のファイルタイプを何らかの方法で確認する必要があります...

                if($extension=="jpg" || $extension=="jpeg"){
                    $image = imagecreatefromjpeg($filename);
                }else if($extension=="png"){
                    image = imagecreatefrompng($filename);
                }else{
                    $image = imagecreatefromgif($filename);
                }

これを可能にする機能を知っている人はいますか?

返信ありがとうございます。

4

3 に答える 3

2

最も簡単で、GD 互換性チェックの場合は、文字列から作成できます。

$image = imagecreatefromstring(file_get_contents($filename));

これがロードに失敗した場合、その画像を処理できないことがわかります。

ただし、 も参照してくださいgetimagesize。幅と高さだけでなく、ファイルタイプも検査します。

list($width, $height, $type) = getimagesize($filename);

3 番目の要素 は、次の定数$typeのいずれかです。IMAGETYPE_XXX

Value   Constant
1     IMAGETYPE_GIF
2     IMAGETYPE_JPEG
3     IMAGETYPE_PNG
4     IMAGETYPE_SWF
5     IMAGETYPE_PSD
6     IMAGETYPE_BMP
7     IMAGETYPE_TIFF_II (intel byte order)
8     IMAGETYPE_TIFF_MM (motorola byte order)
9     IMAGETYPE_JPC
10    IMAGETYPE_JP2
11    IMAGETYPE_JPX
12    IMAGETYPE_JB2
13    IMAGETYPE_SWC
14    IMAGETYPE_IFF
15    IMAGETYPE_WBMP
16    IMAGETYPE_XBM
17    IMAGETYPE_ICO

からexif_imagetype。両方を組み合わせると、最初にタイプがロードできるかどうかを確認し、次にロードできるかどうかを確認できます。

于 2012-04-12T20:04:11.473 に答える
1

Splfileinfo::getextension.phpちょうどあなたが必要なものかもしれません。

編集:私は読み間違えました、あなたは文字列の拡張子をチェックしたいだけです。PHPにはそのための組み込み関数はなく、単純に正規表現を使用できます。

$ext = substr(strrchr($fileName,'.'),1);
于 2012-04-12T19:59:52.510 に答える
1

あなたはこれを試すことができます

$fileExtention = pathinfo ( $filename, PATHINFO_EXTENSION );

または

$fileExtention = image_type_to_extension(exif_imagetype($filename));

最後に、 http://phpthumb.sourceforge.net/のようなものを使用することをお勧め します。これには、画像を操作するために必要なもの以上のものがあります

于 2012-04-12T20:16:09.653 に答える