1

何かをデザインできる Web アプリケーションを構築しています。プロセスの最後に 2 つの画像を出力します。1 つは gif で、もう 1 つは jpeg です。私は両方の画像を取り、それらを1つの画像にマージしようとしています。ただし、いくつかの手法を試した後、どれも機能しないようです。

私のスクリプトは次のとおりです。

$imgl = $_GET['img1'];
$img2 = $_GET['img2'];


$dest = imagecreatefromjpeg('$imgl');
$src = imagecreatefromgif('$img2');

// Copy and merge
imagecopymerge($dest, $src, 10, 10, 0, 0, 100, 47, 75);

// Output and free from memory
header('Content-Type: image/gif');
imagegif($dest);

imagedestroy($dest);
imagedestroy($src);

ただし、表示される画像は画像以外のアイコンを表示するだけです。変数 $img1 と $img2 には、画像が存在するフォルダーへの画像パスが含まれています。これは、html の img タグで 2 つの変数をエコーすると、両方の画像が表示されるためです。私のスクリプトのどこが間違っているのか誰か教えてもらえますか?

4

3 に答える 3

1

私はあなたの例がPHP DOC向けであることを知っていますが、私もそれをテストしましたが、私にとってはうまくいきません..少し回避すればうまくいくはずです

$imgl = "a.jpg";
$img2 = "f.gif";

$dest = imagecreatefromjpeg($imgl);
$src = imagecreatefromgif($img2);
imagecolortransparent($src, imagecolorat($src, 0, 0));

$src_x = imagesx($src);
$src_y = imagesy($src);
imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);

// Output and free from memory
header('Content-Type: image/gif');
imagegif($dest);

imagedestroy($dest);
imagedestroy($src);
于 2012-10-19T14:36:37.420 に答える
1

単一引用符を削除する必要があります。これらは、PHP が文字列内の変数を検索するのを防ぎます。PHP での引用符の使用法について詳しくは、こちらをご覧ください。

意味:

$dest = imagecreatefromjpeg($imgl);
$src = imagecreatefromgif($img2);

さらに、画像の操作を許可するかどうかを確認する必要があります。GET パラメータの名前を知っている人なら誰でも、悪意のある可能性のあるファイル パスをパラメータに入れることができます。これを防ぐことはできません。

便利な関数は、realpathbasename、およびfile_existsです。

于 2012-10-19T14:31:33.193 に答える
0

これで問題が解決するかどうかは 100% 保証されていませんが、構文エラーであることは間違いありません。これ:

$dest = imagecreatefromjpeg('$imgl');
$src = imagecreatefromgif('$img2');

次のようにする必要があります。

$dest = imagecreatefromjpeg($imgl);
$src = imagecreatefromgif($img2);

'$img1'リテラル文字列andではなく、 $img1 と $img2 の値を渡したいとします'$img2'

于 2012-10-19T14:31:37.377 に答える