画像のサイズを動的に変更してブラウザに送信するコードがあります。
しかし、それは正しく動作しません...ブラウザの代わりにファイルに画像を出力するように依頼した場合のみ。
この問題は実サーバーでのみ発生するため、問題は私のコードではないと思います。私のコンピューターでは、完全に機能しています。
コード:
$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);
Fotos::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 サーバーでは機能しません。
[編集]
行
にコメントを付ける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 は空の画像を表示し<img>
ますsrc
。
[EDIT2] 出力を保存してから開こうとすると、EyeOfGnome は「JPEG ファイルではありません: 0xef 0xbb で始まります」と表示します (通常は .jpeg ファイルに保存されます)。