2009-08-28 12 views
0

イメージのサイズを変更してブラウザに送信するコードがあります。PHPはイメージファイルを作成しますが、リモートサーバではなくローカルのdevでしか動作しません。

しかし、ブラウザの代わりにファイルに画像を出力するように頼んだ場合にのみ、正しく動作しません。

この問題はが実際のサーバーでのみ発生するため、私のコードは問題ではないと思います。;私のコンピュータでは完全に動作します。

コード:

$img = $_GET['img']; 

ini_set('allow_url_fopen', 'on'); 

$info = getimagesize($img); 
header('Content-type: '.image_type_to_mime_type($info[2])); 
Fotos::redimensiona($img, null, Fotos::MINIGAL_WIDTH, Fotos::MINIGAL_HEIGHT, false); 

写真集:: redimensiona():

//[...] a whole bunch of code calculating dimensions, they just works 
// $funcImage is like 'imagejpeg'/'imagepng'/'imagegif', depends on file 
if ($arquivo) { 
    $funcImage($thumb, "$final.$ext"); 
    return "$final.$ext"; 
} 
else { 
    $funcImage($thumb); 
} 

は覚えている:それはローカル開発にを動作しますが、リモートWebサーバー上にありません。

[EDIT]
Iはheaderラインコメント場合、バイナリコードが印刷されています。このコードは、元のイメージを変更したときに変更されます。
しかし、headerの場合、Firefoxは私にページのURL(http://www.sabianoar.com.br/novosabia/inc/phpImg.php?img=awful_escaped_long_path.jpegのようなもの)を表示します。もし私がCTRL+Iをしたら、それは0x0のサイズのJPEGで、10kbのようです。
Operaは私が間違ってsrc<img>置かれていたならば、それはすなわち、行うように、私に空の画像を示し

は[EDIT2] EyeOfGnomeは言う:とき、「未JPEGファイルは0xEFという0xbbから始まる」I保存し、出力を開きます(通常は.jpegファイルに保存されます)。

+0

「正しく動作しません」とはどうなりますか?それは間違っていますか?出力はありませんか?壊れた画像? – NSSec

+0

編集を見てください。 =]この情報を追加しました。 – igorsantos07

答えて

3

コードの出力先はBOMです。 <?phpの前にBOMが含まれている場合は、リモートWebサーバーからコードを開き、16進エディタ(xxdなど)を使用してチェックします。あなたが見ているファイルにBOMが含まれていない場合は、それがインクルードされている可能性があります。

一部のエディタはBOMを追加し、Apacheは出力します。それはおそらくあなたのイメージを壊すものです。

+0

ありがとうSO MUCH \ o / – igorsantos07

0

イメージが存在するイメージ/ディレクトリのアクセス許可を確認してください。

+0

フォルダは777、JPEG、666です。どちらも可読です。そして私は[私は質問を編集します]と言っていることを忘れていましたが、私が 'header'行にコメントするとバイナリコードが出力されます。元の画像を変更するとこのコードが変わります。 – igorsantos07

+0

JPEG 777も作ってみましたか?それがうまくいくかどうかはわかりません。私はしばらく前に奇妙なことを経験しました。 – Randell

+0

また、ブラウザからHTMLソースを確認してください。 – Randell

0

これはおそらく原因ではありませんが、なぜFotos::redimensional()の結果をエコーし​​ていますか? imagejpeg()などの関数は、画像を出力した後にbool(画像データではありません)を返します。したがって、画像の最後に '1'が出力されます。私はちょうどこれをテストし、それはjpegイメージを壊すように見えません。

+0

はい...これは私のPC上で動作するので、中断しません。とにかく、私はエコーを取り除いた。 = Pしかし、私の問題を解決しない=( – igorsantos07

0

ローカルマシンとサーバーを比較しようとしましたか? phpinfo()の出力を比較する。彼らは異なるプラットフォームですか?

関連する問題