web-dev-qa-db-ja.com

ポップアップウィンドウでfile_get_contentsを使用して画像を表示する

File_get_contents関数とechoステートメントを使用して、ポップアップウィンドウに画像を表示しようとしています。

これが最初のビューにあるコードです

<a href='javascript:window.open("index.php?option=com_jsmdownload&view=request&tmpl=component&layout=showimage&img=icon-36-ldpi.png", "Image View", "toolbar=no, location=no, width=400, height=400")'>Click</a>

以下は、同じビュー内の2番目のレイアウトのコードです

$image = JURI::base().DS.'files'.DS.'images'.DS.'icon.png';
//echo $image;
$content = file_get_contents($image); 
header('Content-Type: image/png');
echo $content; exit();

最初のビューで「クリック」アンカーをクリックすると、ポップアップウィンドウが開き、内部にゴミが表示されます。

enter image description here

画像パスは正しく、別のブラウザのURLで画像パスを参照すると、画像が表示されます。

何が欠けているかわからない。誰かがこれを助けてくれますか?

5
Malaiselvan

私はジェレミーに同意します。単純に_<img>_タグを使用し、PHPを使用してファイル名を挿入できます。

ただし、何らかの理由でPHPを使用してファイルを読みたい場合は、readfile()を使用してみてください。さらに、getimagesize()を使用して正しいMIMEタイプを取得し、動的に挿入できます。そうすれば、1つのファイルタイプの使用に限定されません。

_$image = JURI::base().DS.'files'.DS.'images'.DS.'icon.png';
$imginfo = getimagesize($image);
header("Content-type: ".$imginfo['mime']);
readfile($image);
_

お役に立てば幸いです。

5
johanpw

ヘッダーを設定して画像を直接処理する必要はありません。これにより、探している結果が得られます。

2番目のコードブロックは次のようになります。

$input = JFactory::getApplication()->input;
$layout = $input->get('layout');
If (isset($layout) && $layout == 'show image') {
$image = JURI::base().'files/images/icon.png';
printf('<img src="%s" />', $images);

}

4
Jeremy Proffitt