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();
最初のビューで「クリック」アンカーをクリックすると、ポップアップウィンドウが開き、内部にゴミが表示されます。
画像パスは正しく、別のブラウザのURLで画像パスを参照すると、画像が表示されます。
何が欠けているかわからない。誰かがこれを助けてくれますか?
私はジェレミーに同意します。単純に_<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);
_
お役に立てば幸いです。
ヘッダーを設定して画像を直接処理する必要はありません。これにより、探している結果が得られます。
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);
}