0

私のサーバーはphpを実行していて、画像を送信できるようにしたいと思っています。たとえば、「profile.jpg」。

C#では、ビットマップイメージにソースを入力するだけですが、イメージのバイナリデータを出力するファイルであるソースを作成するにはどうすればよいですか?

私はこれを持っています:

<?php
$file = 'profil.jpg';
$image = imagecreatefromjpeg($file);
imagealphablending($image, false);
imagesavealpha($image, true);

// start buffering
ob_start();
imagepng($image);
$contents =  ob_get_contents();
ob_end_clean();

echo "<img src='data:image/jpeg;base64,".base64_encode($contents)."' />";

imagedestroy($image);
?>

しかし、それはHTMLを出力します、私はただできecho base64_encode($contents)ますか?

4

1 に答える 1

1

ヘッダーが欠落していると思います。バッファーをクリーニングする代わりに、それ をフラッシュする必要があります。

<?php
$file = 'profil.jpg';
$image = imagecreatefromjpeg($file);
imagealphablending($image, false);
imagesavealpha($image, true);

// start buffering
ob_start();

header('Content-Description: File Transfer');
header('Content-type: image/png');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public');

imagepng($image);
$contents =  ob_get_contents();

// echo $contents;
// ob_end_flulsh();
/* OR */
ob_get_fllush();

echo "<img src='data:image/jpeg;base64,".base64_encode($contents)."' />";

imagedestroy($image);
?>

そんな感じ。もちろん、相手側で必要なものに応じて、ヘッダーに情報を追加したり、ヘッダーの情報を減らしたりすることができます。HTTP/1.1: ヘッダー フィールドの定義. また、コントロール Fctns を出力します。

于 2012-06-23T15:09:16.600 に答える