-1

私は、ユーザーがプロファイル画像をアップロードしてから、それらをトリミングして便利な位置を選択するのに役立つスクリプトを使用しています。表示されない PNG および GIF 画像に問題があります。これはトリミング ファイルのコードです。 PNG、JPF、GIF画像を表示できます

<?php
 sleep(1);
 $url = $_GET['url'];
 $type = $_GET['type'];
 if ($type='jpg') {
    if(file_exists($url) AND preg_match('/^[a-z0-9\/_\-.]+$/i',$url)){
$width  =   (isset($_GET['width'])  AND preg_match('/^[0-9]{2,}$/', $_GET['width']))    ? $_GET['width']    : 300;
$height =   (isset($_GET['height']) AND preg_match('/^[0-9]{2,}$/', $_GET['height']))   ? $_GET['height']   : 300;
$left   =   (isset($_GET['left'])   AND is_numeric($_GET['left']))  ? $_GET['left']     : 0;
$top    =   (isset($_GET['top'])    AND is_numeric($_GET['top']))       ? $_GET['top']      : 0;
header ("Content-type: image/jpg");
$src    =   @imagecreatefromjpeg($url);
$im     =   @imagecreatetruecolor($width, $height);
imagecopy($im,$src,0,0,-$left,-$top,$width,$height);
imagejpeg($im,"",300);
imagedestroy($im);}}

    elseif ($type='png') {

     if(file_exists($url) AND preg_match('/^[a-z0-9\/_\-.]+$/i',$url)){
$width  =   (isset($_GET['width'])  AND preg_match('/^[0-9]{2,}$/', $_GET['width']))    ? $_GET['width']    : 300;
$height =   (isset($_GET['height']) AND preg_match('/^[0-9]{2,}$/', $_GET['height']))   ? $_GET['height']   : 300;
$left   =   (isset($_GET['left'])   AND is_numeric($_GET['left']))  ? $_GET['left']     : 0;
$top    =   (isset($_GET['top'])    AND is_numeric($_GET['top']))       ? $_GET['top']      : 0;
header ("Content-type: image/png");
$src    =   @imagecreatefrompng($url);
$im     =   @imagecreatetruecolor($width, $height);
imagecopy($im,$src,0,0,-$left,-$top,$width,$height);
imagepng($im,"",300);
imagedestroy($im);
     }
      }
     ?>
4

1 に答える 1

0

入力ファイルの形式を確認してから、サポートされている関数を呼び出す必要があります。

入力ファイルが jpeg の場合は、imagecreatefromjpegandを呼び出しますimagejpeg
入力ファイルが png の場合は、imagecreatefrompngandを呼び出しますimagepng
入力ファイルが gif の場合は、imagecreatefromjpegandを呼び出しますimagegif

于 2012-09-30T22:07:53.157 に答える