質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

2006閲覧

実際表示される画像のサイズに合わせてリサイズモジュールの指定値を書き換えたい

sakurai_rina

総合スコア22

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/08/15 12:41

下記のimgタグを使用するとします。
<img src="momiji.jpg?width=300&height=200&type=resize" width="600" height="400">

srcにtype=resizeを含める事で、自動リサイズのモジュールを呼び出し、元画像をwidth300px、height200pxにリサイズして自動生成するようになっています。

しかし、上記の例ではsrc以降の記述により、実際表示されるサイズがwidth600px、height400pxになっているため、画像が拡大され粗く表示されてしまいます。

「モジュールのリサイズ指定値が、実際の表示サイズよりも小さい場合、表示サイズに合わせて自動で置換」する事は可能でしょうか。

<img src="momiji.jpg?width=300&height=200&type=resize" width="600" height="400"> 上記の例では、リサイズの指定値が実際の表示サイズより小さいので、 <img src="momiji.jpg?width=**600**&height=**400**&type=resize" width="600" height="400"> 上記の形にしたいです。 <img src="momiji.jpg?width=300&height=200&type=resize" width="150" height="100"> 上記はリサイズの指定値の方が大きいので、処理は行いません。 <img src="momiji.jpg?width=300&height=200&type=resize"> 上記のように、表示サイズの指定が無い場合も処理は行いません。

preg_replaceを使用すると可能な気がして色々試してはみたのですが、上手くいかないので質問させていただきました。
ご教授のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

全体を通して読むと、矛盾があったり、一体何がやりたいの?と複数の疑問点がありますので、一つ一つ確認します。

下記のimgタグを使用するとします。
<img src="momiji.jpg?width=300&height=200&type=resize" width="600" height="400">

srcにtype=resizeを含める事で、自動リサイズのモジュールを呼び出し、元画像をwidth300px、
height200pxにリサイズして自動生成するようになっています。

まず、src に指定しているファイルが、jpg 形式ですね。
php というように指定されているのであれば、「自動リサイズのモジュールを呼び出」すことは可能ですが、jpgを指定しながら、「自動リサイズのモジュールを呼び出」すことをどうやって実現しようとしているのでしょうか?

「モジュールのリサイズ指定値が、実際の表示サイズよりも小さい場合、表示サイズに合わせて自動で置換」する事は可能でしょうか。

<img src="momiji.jpg?width=300&height=200&type=resize" width="600" height="400"> 上記の例では、リサイズの指定値が実際の表示サイズより小さいので、 <img src="momiji.jpg?width=600&height=400&type=resize" width="600" height="400">

上記の形にしたいです。

単純に出力するHTMLの文字列を加工するだけなら、可能ですが、「自動リサイズのモジュールを呼び出」すこととどう両立させるのですか?

preg_replaceを使用すると可能な気がして色々試してはみたのですが、上手くいかないので質問させていただきました。

preg_match を利用してもできることはあくまで文字列の加工だけであって、画像の加工はできるものではありません。何か肝心なところの説明が抜けているのか、「自動リサイズ」という用語の解釈にズレがあるのか、いずれにしても誤解の生じない具体的な説明が欲しいところです。


php

1function auto_image($filename, $width, $height) { 2 $html = '<img src="{$filename}?width={$width}&height={$height}&type=resize" width="{$width}" height="{$height}">'; 3 return $html; 4}

投稿2018/08/15 20:14

編集2018/08/16 09:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakurai_rina

2018/08/16 08:05

ご回答ありがとうございます。 >まず、src に指定しているファイルが、jpg 形式ですね。 >php というように指定されているのであれば、「自動リサイズのモジュールを呼び出」すことは可能ですが、jpgを指定しながら、「自動リサイズのモジュールを呼び出」すことをどうやって実現しようとしているのでしょうか? http://cloudrop.jp/labs/nginx_image_filter 上記で実現しております。 >単純に出力するHTMLの文字列を加工するだけなら、可能ですが、「自動リサイズのモジュールを呼び出」すこととどう両立させるのですか? >preg_match を利用してもできることはあくまで文字列の加工だけであって、画像の加工はできるものではありません。 リクエストがあった際に画像が生成されるため、HTMLの文字列を加工することで実現可能だと考えています。 ご指摘の通り、違和感を与えてしまうような、おかしな内容だと思っております。。 経緯といたしましては、 ①ライターの使用している画像が単純なurl(フルサイズ)となっており <img src="momiji.jpg" width="600" height="400"> ②容量が大きすぎるため、SQLでリサイズのための最低サイズのパラメータを設置 <img src="momiji.jpg?width=300&height=200&type=resize" width="600" height="400"> ③ただし、画像タグの中には上記の width="600" height="400" のようにサイズが指定されているものがあるため、この場合は、実際に表示される際にはリサイズのパラメータを合わせたい <img src="momiji.jpg?width=600&height=400&type=resize" width="600" height="400"> 上記の流れになっています。
退会済みユーザー

退会済みユーザー

2018/08/16 08:12

普通に、$width, $height, $filename の3つを引数に関数を作ってタグを生成すれば済むことじゃないですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問