2012-01-09 11 views
0

を使用した後、私は、ユーザーが画像ファイルをアップロードしたシナリオを持っています。背景色(左上隅の色として定義されています)を取り除き、imagepngでファイルに保存します。巨大なラグimagepng

私はもともと、直接そのファイル名と呼ばれる一部のHTMLをエコーし​​ようとしたが、それは(これは6Kファイル、空想何もあり)表示されるように画像のための限り7分程度かかります。私は、同じリクエストで投稿されたデータを使用しようとすべきではないということを読んだので、イメージを出力する代わりに、イメージを取得する2番目のページへのリンクに変更しました。

しかし、同じ遅れが発生します。私は多くの画像操作をしていないので、私が間違ってしまった場所や、物事をスピードアップする方法についての指導を感謝します。私の最終的な目標は、ここでは、主要なコードですviewing_page.htmlがちょうど<img src="target.png"/>

<?php 
if($_FILES['test']['tmp_name']){ 
    //some validation is necessary, this is just a proof of concept for a friendly user test 
    if($_FILES['test']['type']=="image/png"){ 
     $im = imagecreatefrompng($_FILES['test']['tmp_name']); 
    } 
    if(($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")){ 
     $im = imagecreatefromjpeg($_FILES['test']['tmp_name']); 
    } 
    if($_FILES['test']['type']=="image/gif"){ 
     $im = imagecreatefromgif($_FILES['test']['tmp_name']); 
    } 
    //determine background RGB 
    $rgb = imagecolorat($im, 0, 0); 
    $r = ($rgb >> 16) & 0xFF; 
    $g = ($rgb >> 8) & 0xFF; 
    $b = $rgb & 0xFF; 
    $background = imagecolorallocate($im, $r, $g, $b); 
    // Make the background transparent 
    imagecolortransparent($im, $background); 
    imagepng($im,'target.png'); 
    imagedestroy($im); 
    echo "<a href=\"viewing_page.html\">View</a>"; 
    //echo "<img src=\"target.png\"/>"; //-----------this was my first (and preferred) approach 
    } 
else{ 
    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body bgcolor="#00CCFF"> 
    <form action="" method="post" enctype="multipart/form-data"> 
    <input name="test" type="file" /> 
    <input type="submit" value="Submit" /> 
    </form> 
    </body> 
</html> 
    <?php 
} 
?> 
+0

小さな画像をアップロードするためにどのくらいの時間がかかりますか?具体的にする! – marinara

+0

ダウンロードに422秒、アップロードに0.25秒。私は以下の答えがうまくいったと思っていましたが、今度はIMAGEがすぐに戻っても、サポートされているJSファイルは422秒も遅れていることが判明しました。 –

答えて

1

imagepngが本当に.PNGファイルを生成するために時間がかかるんされたか、ユーザーが時間

で画像を10+アップロードされるかもしれないということですあなたのWebサーバーは、7分以上経過するまでイメージを提供しませんか?私のシステム(Linux、PHP 5.3.6)とあなたのコードで、イメージはすぐに利用可能です。

+0

まあ、画像がすぐに作成され、私は(私のホストでのDreamweaverまたはphpadmin経由で)サーバ上でそれを見ることができますが、私は、私は、このスクリプトでは、直接のいずれかでそれにアクセスすることはできませんので、それは完全には提供されていないと思います新しいウィンドウ...私は多分私はimagepngに何か...(PHP 5.2.17、Linux)をやっていたと思った理由です... –

+0

私にこれはあなたのホスティングプロバイダに問題があるように聞こえます。画像ファイルの要求がキャッシュのレイヤーを通過し、キャッシュがストレージをチェックしていないことが原因で遅延が発生する可能性があります。手動でアップロードする画像でも同じことが起こりますか? – Joni

+0

私はちょうど彼らと電話から降りて、彼らはまた、即座の結果を得る...私のローカルマシン/環境(私は重いセキュリティの場所にある)で何かが間違っている必要があります。ご協力いただきありがとうございます –