2009-08-04 18 views
0

350x100を超えるアップロードスクリプトを使用してアップロードされる画像のサイズを350x100に縮小するにはどうすればよいですか?ダウンスケーリング/サイズ変更?

マイスクリプト:

$allowed_filetypes = array('.png','.PNG'); 
$filename = $_FILES['strUpload']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
if(in_array($ext,$allowed_filetypes)) 
{ 
    list($width, $height, $type, $attr) = getimagesize($_FILES['strUpload']['tmp_name']); 
    if ($width > 350 || $height > 100) 
    { 
     echo "That file dimensions are not allowed. Only 350x100 is allowed"; 
     exit(); 
    } 

    if ($_FILES['strUpload']['size'] > 2097152) 
    { 
     echo "ERROR: Large File Size. Only less than 2mb accepted"; 
     exit(); 
    } 

    $imagename = uniqid('ff') . ".png"; 
    move_uploaded_file ($_FILES['strUpload']['tmp_name'], $imagename); 

    print ("<script type=\"text/javascript\">"); 
    if(file_exists($imagename) && $_FILES['strUpload']['name'] != '') 
    { 
     print ("self.opener.SetImageFile(\"" . $imagename . "\");"); 
     echo "\n"; 
     print ("self.opener.setInputFile(\"" . $imagename . "\");"); 
    } 
    echo "\n"; 
    print ("window.close();"); 
    echo "\n"; 
    print ("</script>"); 

    $open = new dbconnect(); 
    $open->callDB("localhost","pema2201_william","lindberg","pema2201_siggen"); 

    $ip = $_SERVER['REMOTE_ADDR']; 
    $dattum = date('Y-m-d H:i:s', time()); 

    mysql_query("INSERT INTO piclist (ip,pic,datum) VALUES('$ip','$imagename','$dattum')") or die(mysql_error()); 

} 
else 
{ 
    echo "WRONG FILE TYPE ONLY PNG ALLOWED" 
} 
+0

多分、すべての行の前に4行のスペースを入れてコードを書式化して、より明確にする必要があります – Eineki

+0

これらのことがどのように機能するかは($ _SERVER ['REMOTE_ADDR'] 'が偽造可能かどうか)は分かりませんが、いくつかのクエリをエスケープするのが賢明です。 –

答えて

0

使用imagecopyresized - PHPマニュアルページにそれを使用する方法の良い例があります。

1

PHPにはいくつかの画像処理ライブラリがあります。 GD libraryはPHP 4.3以降に出荷されていますので、私はそれを使用することをお勧めします。必要なものを見つけるためにドキュメントを読んでください。

0

this質問をご覧ください。他の誰かが数日前に尋ねました。

それだけでなく、それが効率的に行われている方法について説明します。 (ImageMagickはGDライブラリ上で使用する必要があります)

希望します。

0

一般要旨はに行くためのイメージのために所望の寸法の新しい「キャンバス」を作成することです。

取る(アップロードした画像を取り、ソース幅x高さを設定与える新しいキャンバスにそれをコピーすべてのソースイメージ)とデスティネーションの幅x高さ(すべてのデスティネーションキャンバスを使用)を使用して、必要に応じて少しずらしてイメージをシフトできます。

最後に、必要な場所に保存するか、データベースフィールドに挿入します(move_uploaded_file呼び出しが置き換えられます)。