• 締切済み

imgタグでのphpの呼び出しについて

PHP+smartyを使って開発をしております。 【image.php】 イメージを出力するPHP 【index.php】 処理PHP 【index.tpl】 画面のテンプレート 3つのファイルがあり、 (1) index.phpにアクセスすると、 index.tplのテンプレートが呼び出されるようになっています。 index.tplの中で、<img src="image.php">とすると image.phpで出力した画像がindex.tplの中に表示されます。 (2) index.phpにアクセスすると、 index.tplのテンプレートが呼び出されるようになっています。 index.tplの中で、<img src="{imageChange}">とすると image.phpで出力した画像がindex.tplの中に表示されずバイナリデータが表示されてしまいます。 index.phpの中で関数が使用出来るように $smarty->register_function( "imageChange", "imageChange" ); と書いてあります。 (2)でやりたい理由として、 (1)でやるとパラメータを渡す際に、 ?aaa=1&bbb=2&ccc=9&ddd=4.....としなければいけないのと、 処理毎にPHPファイルを分けないといけない為です。 何とか関数を使用してテンプレートで呼び出す方法はないでしょうか。 他にいい方法がありましたら他の方法でも構いません。 ご教授お願い致します。

  • PHP
  • 回答数3
  • ありがとう数1

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

たとえば ## MyImage.php class MyImage { . . function html($src, $options = array()) { . . . . return '<img src="image.php?params" />'; . . } } ## image.php readfile('aaa.jpg'); ## index.php $smarty->assign('image', new MyImage()); ## index.tpl {$image->html('aaa.jpg', array('width'=>100, 'height'=>50, 'type'=>'gif'))} なんか中途半端だな..

  • mizutaki
  • ベストアンサー率33% (111/333)
回答No.2

imgタグの中のsrcという属性は、画像の位置を指す属性であって、画像データをさす属性ではありませんから、 この属性の中に画像データを埋め込んでも、それを表示することは不可能です。 1つのデータファイルで画像もhtmlソースもデータとして処理し表示するのはほぼ不可能です。 なので1以外の手段は使えない。

momo12345
質問者

補足

ご回答ありがとうございます。 (1)に書いた場合うまくいくのは、 image.phpが画像ファイルとして認識されているというからでしょうか? 処理的には同じように見えるのですが、 確かにパス指定とそうでないものなので違いますね。 何とかうまく出来ないものかと思いましたが無理そうなので (1)の方法でやろうかと思います。 ありがとうございました。

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

>バイナリデータが表示されてしまいます のは imageChange function がちゃんと書けてないだけですよね? URLを生成した文字列の変数や URLを生成するメソッドをもったオブジェクトを Smartyに渡してやるのはどうでしょうか。 PS. ?aaa=1&bbb=2&ccc=9&ddd=4 は具体的にどんな値なんでしょうか?

momo12345
質問者

お礼

ご回答ありがとうございます。 >>バイナリデータが表示されてしまいます >のは imageChange function がちゃんと書けてないだけですよね? imageChangeを関数にしないでimageChangeの処理と全く同様のPHPを <img src="imageChange.php">のように呼び出すと問題なく表示されます。 >PS. ?aaa=1&bbb=2&ccc=9&ddd=4 は具体的にどんな値なんでしょうか? やりたい事としては、aaa.jpgというイメージファイルがあり、 <imageChange src="aaa.jpg" width="100" height="50" type="gif"> と記述すると、画像を幅100、高さ50、画像をgifに変換したものを 表示したいと思っております。 ?aaa=1&bbb=2&ccc=9&ddd=4 は具体的には ?src=aaa.jpg&width=100&height=50&type=gifみたいな感じになります。 >URLを生成した文字列の変数や >URLを生成するメソッドをもったオブジェクトを >Smartyに渡してやるのはどうでしょうか。 あまり知識が無い為よくわからないのですが、 具体的にどういったことになるのでしょうか?

関連するQ&A

  • ロリポップでSmartyのtpl読み込みエラー

    下記のコードを実行すると、  Smarty error: unable to read resource: "template1.tpl"  というエラーが出てしまいます。 $smarty->template_dirで指定したディレクトリ名の中に  "template1.tpl"というファイルは配置してあります。  原因などわかればおしえていただけないでしょうか。 index.php <?php require_once("Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = './templates/'; $smarty->compile_dir = './templates_c/'; $smarty->config_dir = './configs/'; $smarty->cache_dir = './cache/'; $smarty->display("template1.tpl"); ?> 【サーバ】  ロリポップです。 【その他】 index.phpをホームディレクトリ配下におくとエラーは消えます。 【ディレクトリ構成】 modules/index.php と templates/template1.tpl をがあり、 index.php から template1.tpl を読み込もうとしています。  ・modules →index.php ・templates →template1.tpl

    • ベストアンサー
    • PHP
  • IMGタグの中にPHP

    こんばんは,最近PHPを勉強し始めて色々なサイトを見て回っているのですが,時折IMGタグの中に <img src="xxx.php?abc=012">のような形でphpが指定されていることがあります.HTMLの表示では,アクセスする度にこの部分の画像が入れ替わったりします. これはどういう動作をするのでしょうか.いくつか入門書を購入して勉強しているのですが,<?php~?>という風に書くんだよということしか掲載されておらず,上記の記述がどういう動作をするのか理解できません. また,オススメの参考書籍,ウェブサイトなど併せて教えていただけると嬉しいです.よろしくお願いします.

    • ベストアンサー
    • PHP
  • HTMLのIMGタグについて

    HTMLのimgタグで(1)と(2)のようにした場合、表示が異なります。 (1)のほうが画像間のスペースが広くなります。また(2)の場合でも ほんの少しスペースが開くようです。 (1) <img src="image1"> <img src="image2"> (2) <img src="image1"><img src="image2"> HTMLは文章の構造タグなので(1)でも(2)の場合でも、改行は関係ないので 同じ表示になるべきなのではないでしょうか? なぜ異なった表示になるのでしょうか。 また画像間のスペースを0にしたいのですが、何か方法を教えてください。

    • ベストアンサー
    • HTML
  • Smartyに関しまして

    require_once("Smarty/Smarty.class.php"); $smarty = new Smarty(); $smarty->template_dir = "./templates"; $smarty->compile_dir = "./templates_c"; $smarty->assign("message", "こんばんは"); $a = array('hello','php','html'); $smarty->assign('a',$a); $smarty->display("index.tpl"); これでindex.tplで出力すると日本語部分が「?????」になってしまいます。 何か設定がいるんでしょうか??

    • ベストアンサー
    • PHP
  • imgタグのsrcの指定

    PHPおよびHtmlの構文にて、下記のsrcの指定は正しいのでしょうか? 実はこれ、Freeのスクリプトのコードですが、出力をすると、imgのリンクがhttp://bestpartnerusa.com/images/default_photo.php?profile=4と出力されてしまい、写真の部分が×表示されてしまいます。なにか、お気づきの点がありましたら、ご教示をお願いします。 echo "<a href=\"index.php?page=view_profile&id=".$profile[ id ]."\"><img height=100 border=0 hspace=0 vspace=0 src='images/default_photo.php?profile=".$profile[ id ]."'></a>";

    • ベストアンサー
    • PHP
  • smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し

    smaryテンプレートを使う上で、Smartyオブジェクトを二つ作成し、それぞれのそのなかの変数をひとつのテンプレートに表示するという方法は可能でしょうか?つまりそれぞれを同じテンプレートに表示する、という方法はできるのでしょうか?PHPは下記のようになります。 $smarty = new Smarty(); $smarty2 = new Smarty(); $smarty->assign('abc', $def); $smarty2->assign('ghi', $jkl); $smarty->display('aaa.tpl'); $smarty2->display('aaa.tpl'); それとも、オブジェクトと表示するテンプレートは1つずつでないといけないとだめで、$smartyと$smarty2は、どっちかひとつに統一する必要があるのでしょうか?

    • ベストアンサー
    • PHP
  • Pleskサーバ利用時にSmartyのassignが出来ません

    現在、Pleskサーバを利用して、 Apache+Smarty+PHPのWEBプログラミングを行っているのですが、 PHPのユーザ関数内で、Smartyのassign()関数を使用した場合に、Smarty変数の生成を行うことが出来ません。 例としては以下のような感じになります。 ================================================================ <? $smarty->assign( 'a', 'a' ); // テンプレート上で{$a}とするとaと表示される test( $smarty ); $smarty->display('index.tpl'); // index.tplを表示する function test( $smarty ) { $smarty->assign( 'b', 'b' ); // テンプレート上で{$b}としてもbは表示されない } ?> ================================================================ $smartyというのは、$smarty = new Smarty();を行ったものです。 このプログラム自体は、Plesk導入前は動作しておりましたが、 Plesk導入後は上記のように、ユーザ関数外では、通常通りassign()を行うことが出来るのですが、ユーザ関数内だと無効となってしまいます。 また、Pleskのsafe_modeはOffにしております。 Pleskは初めて使用するため、動作上まだ知らないことばかりで、とても初歩的なミスをしているかと思いますが、Pleskに詳しい方がおりましたらどうか教えて頂きたいと思います。

    • ベストアンサー
    • PHP
  • Smartyを使ってhtmlファイルを生成する方法で悩んでいます

    Smartyとphpで動的にページコンテンツを生成するサイトをつくっています。 例えば、 index.php?m=front → front.phpにアクセスしてfront.tplを返す index.php?m=page2 → page2.phpにアクセスしてpage2.tplを返す index.php?m=page3 → page3.phpにアクセスしてpage3.tplを返す … という動作をさせています。 ただ設置しているレンタルサーバーが最近重く動作が鈍重になってしまい、phpファイルからただのhtmlファイルに換えたいと思っています。 上の例で言えば、 index.php?m=front → front.html としたいのです。 はじめからfront.htmlを用意し、file("front.tpl")でテンプレートを読み込んでファイルを書き換えようと試しましたが、データベースの情報を含むページにそのデータの内容が反映されないところで行き詰っています。 何かしらの方法で、 php → Smarty → html生成 ということができないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • php 画像表示(imgタグ)

    PHPに関しての質問させて頂きます。 XAMPPにて環境を作り、htdocs内にtestフォルダを 生成し、その中に1.jpgと言う画像があります。 DB上では1だけを保持しており、ブラウザに 1jpg画像を表示させたいのですが、うまく いきません…。 ★$item['IMG']には1が保持しています。 print "<img src='./test" . $item['IMG'] ."img'></td>"; お分かりになる方よろしくお願い致します。

    • ベストアンサー
    • PHP
  • <img src=http://にしたい

    PHPでWebページのソースを取得して そのソースの中の<img>タグの src属性がもしhttp://で始まらなかった場合 取得したURLをsrc属性に加える方法はないでしょうか? 例 URL=http://www.○○.com ソース <img src="/image/01.jpg"> ↓ <img src="http://www.○○.com/image/01.jpg"> に変更したいです。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう