Under the Bridge

a Picture of the Late Him

MT4.1:イメージの幅指定で高さを自動的に計算(Asset系)

2008年2月11日 01:54 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

新しいサイト用に、Asset関連の記事を書いている。

その中から、「MT4.1:イメージの幅指定で高さを自動的に計算(Asset系)」という記事があるのでピックアップしてみよう。

ばらばらな画像サイズの、幅を指定するだけで全ての画像の幅を統一する。高さは演算した縦横比より自動的に演算して調整する。つまり縦横比は変わらない。

あくまでもサンプルであり、実験記事である。かなり未完成かも

コード

<p>画像幅を200に設定。</p>
<MTSetVar name="UserWidth" value="200"><!-- 0でオリジナルサイズ、1以上で幅を基準に高さもサイズ演算 -->
<MTAssets type="image" lastn="10">
  <MTIf name="UserWidth" eq="0">
      <MTSetVarBlock name="ImgW"><MTAssetProperty property="image_width"></MTSetVarBlock>
      <MTSetVarBlock name="ImgH"><MTAssetProperty property="image_height"></MTSetVarBlock>
   <MTElse>
      <MTSetVarBlock name="tmpImgW"><MTAssetProperty property="image_width"></MTSetVarBlock>
      <MTSetVarBlock name="tmpImgH"><MTAssetProperty property="image_height"></MTSetVarBlock>
      <MTSetVarBlock name="ImgH">
         <MTGetVar name="tmpImgW" value="$UserWidth" op="/" setvar="Bairitu">
         <MTGetVar name="tmpImgH" value="$Bairitu" op="/" setvar="AnsImgH">
         <MTGetVar name="AnsImgH" sprintf="%d">
      </MTSetVarBlock>
      <MTSetVarBlock name="ImgW"><MTGetVar name="UserWidth"></MTSetVarBlock>
   </MTIf>
   <img src="<MTAssetURL>" width="<MTGetVar name="ImgW">" height="<MTGetVar name="ImgH">" alt="<MTAssetProperty property="description">"><br />
</MTAssets>

結果と考察

UserWidth変数へ好みの画像幅を指定するだけで、MTAssetsループで取得する全ての画像の高さを計算する。縦横比は保持したまま。また、UserWidth変数へ0を指定すると画像の幅と高さはオリジナルサイズを用いる。

ちと問題点が無いわけでもない。計算結果の高さが割り切れない値である場合はx.xxxxx....などと、小数点以下の数値まで入ってしまう点。ブラウザで画像プロパティを見ると整数に丸められているが(FireFox2とIE7で確認)、ソース中にはばっちり残ってしまっている。

2008/02/11追記:上記の問題点は、算出したイメージ高さを sprintf="%d" モデファイアを付加して整数に丸めることに成功。

貼ってみた

画像幅を200に設定。

MTOS4.2RC4ダッシュボード
MT分科会の課題
ヤマボウシ。立派。
タイガージェット
エントリのデータを取得
カレンダープレビュー
カレンダープラグイン改造
拡張されたDBフィールド
追加したフィールド
カレンダースクリーンショット

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:イメージの幅指定で高さを自動的に計算(Asset系)

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008年4月5日開催、MT4LP5

2008 yoshi(apstar)