1

特定のサイズの画像がいくつかあり、それらを縮小したい。

縮小して保存するのではなく、画像がブラウザに読み込まれるたびにサイズを変更したい

私はWideImage図書館として見てきましたimagecopyresampled

私が使用WideImage::load($_GET['img'])->resize(500, 300)->output('jpg', 90);してこれをエコーアウトすると、実際の画像ではなく、画像からソースコードを取得します。

私もこの方法を見つけました

public function resizeImage($originalImage,$toWidth,$toHeight)
    {

        list($width, $height) = getimagesize($originalImage);
        $xscale=$width/$toWidth;
        $yscale=$height/$toHeight;

        if ($yscale>$xscale){
            $new_width = round($width * (1/$yscale));
            $new_height = round($height * (1/$yscale));
        }
        else {
            $new_width = round($width * (1/$xscale));
            $new_height = round($height * (1/$xscale));
        }


        $imageResized = imagecreatetruecolor($new_width, $new_height);
        $imageTmp     = imagecreatefromjpeg ($originalImage);
        imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

        return $imageResized;
    }

画像を渡して結果をエコーするとresource(192) of type (gd)、画像ではなく取得されます。

また、このメソッドに渡す画像パスがわかりません。http://.....jpgまたは/var/www/images/....jpg

誰でもこれに光を当てることができますか?このプロセスがどのように機能するかをよく理解していないようです

ありがとう

4

2 に答える 2

2

URL ではなくローカル ファイル名をメソッドに渡す

画像を画像として解釈するには、http ヘッダーを設定する必要があります。

header('Content-Type: image/jpeg');
于 2012-07-18T22:08:07.420 に答える
1

私は SimpleImage を使っていますが、とても簡単です。見てください:PHPで画像のサイズを変更します。しかし、それはあなたの問題ではありません。

あなたのコード:return $imageResized;実際の画像ではなく、gdオブジェクトのみを返します。それを変換する必要があり、2 つのことを行うことができます。

  1. スクリプトの URL で画像を読み込む (例: http://localhost/image_converter.php?img=my_img.jpg)
  2. 画像データを URI スキームとして返します (URI を使用することはお勧めできません。出力バッファリングなどを処理する必要があるためです。また、HTML データは巨大です。画像が直接含まれているためです。http://enを参照してください)。 .wikipedia.org/wiki/Data_URI_scheme#Examples )

(あなたの方法を使った例)

で適切なヘッダーを設定する必要がありますheader('Content-Type: image/jpeg');。そしてimagejpeg ( resource $image [, string $filename [, int $quality ]] )、GDオブジェクトには関数を使用する必要があります

<?php
/* image_converter.php */
$image = new Image(); //Will use method in unknown class found by you
$output = $image->resizeImage($_GET['my_img'],50,50); //We have gd object in $output
//!! DO NOT USE GET WITHOUT SECURING IT!
header('Content-Type: image/jpeg');
imagejpeg($output); //This displays image dataa converted in jpg
exit;
?>

呼ばれる:<img src="http://localhost/image_converter.php?img=my_img.jpg" alt="" />

于 2012-07-18T22:42:40.337 に答える