徒然 大きな画像を自動リサイズ

音楽鑑賞記録や読書メモ・感想文、パソコン関係などを徒然なるままに綴ってゆきます。

大きな画像を自動リサイズ

 最近、色々なサイトで綺麗な絵・写真、面白い画像を見るのが楽しみです。
 良い絵は、良い音楽と同様、いつでも手元に置いてすぐに取り出せる状態にしておきたいので、ダウンロードして、ある程度たまったらテーマ別に記事を書いて、このブログに貼り付けています。

 しかし。

 画像は出来る限り大きく見たい。けれども、あまりに大きいと表示に時間がかかるし、ブログの容量には限度がある。

 そんな悩みが以前からありました。

 ブログの容量に関しては、MediaFirePicasa Web Albumsなどのウェブアルバムが無料で利用できるのでそれを活用しています。今、メインで使っているのははてなフォトライフです。複数画像を一括でアップできるので便利です。

 あ、便利といえば、

はてなダイアリーは、自動でキーワードにリンクが付き、語句の説明や、その語を含む日記を読むことが出来るので重宝しています。たまに、記事をはてなへアップし、そのソースをそのままこちらに貼り付けることもしています。
 はてなフォトライフの写真も簡単に日記にアップできるので、はてなの活用は結構おすすめです(ただし、便利なだけに何かと記述方法が特殊で、カスタマイズの際やっかいなので、メインにするのは個人的にはちょっと、、、というかFC2でここまでやってきたのだから、今さら、という思いがあります)。はてなはSEO対策に向いているかもしれません。

 その、はてなダイアリーで気づいたのですが、大きな画像は自動的に小さく表示してくれていますね。クリックすれば元の大きさの画像が見れます。
 一つ一つ、小さい画像を用意して、リンク先に元の画像を指定しても良いのですが、数が多いと煩雑なのでこれは便利!だと思います。

【?】大きすぎる画像を自動縮小、小さい画像はそのまま表示できないか、という質問も参考になりましたが、はてなダイアリーのソースを見ると、スタイルシート「max-width」を使っていることが分かり、早速自分もやってみました。

 はてなダイアリーの画像は既に
<img src="〜" 〜 class="hatena-fotolife">
と属性を与えられているので、テンプレートのスタイルシートに
.hatena-fotolife {
max-width:460px;
}
を付け加えました。

 横幅が460px 以上の画像も、横460px に縮小されたことを確認し、無事終了〜〜♪
\(^o^)/

と思ったのですが、実は終わってませんでした。

 この max-width はIE(Internet Explorer)には対応していないのです!(ーεー)

 え゙、でもはてなダイアリーはIEでもしっかり画像の自動縮小はされているのですが、、、

そう思って再びソースを見てみると、ありました、
<script type="text/javascript" src="/js/max_width_fotolife.js"></script>
の記述が。なるほど、javascript で補っているのですね。

 そこで色々調べた結果(その間、悪戦苦闘しましたが)、「あるSEのつぶやき: minmax.js - IEでCSSのmax-widthなどを使えるようにするライブラリ」にあるように、minmax.js を使うことにより、問題解決できました!!!

 doxdesk.com でダウンロードした minmax.js がこちらです↓
// minmax.js: make IE5+/Win support CSS min/max-width/height
// version 1.0, 08-Aug-2003
// written by Andrew Clover <and@doxdesk.com>, use freely

/*@cc_on
@if (@_win32 && @_jscript_version>4)

var minmax_elements;

minmax_props= new Array(
  new Array('min-width', 'minWidth'),
  new Array('max-width', 'maxWidth'),
  new Array('min-height','minHeight'),
  new Array('max-height','maxHeight')
);

// Binding. Called on all new elements. If <body>, initialise; check all
// elements for minmax properties

function minmax_bind(el) {
  var i, em, ms;
  var st= el.style, cs= el.currentStyle;

  if (minmax_elements==window.undefined) {
    // initialise when body element has turned up, but only on IE
    if (!document.body || !document.body.currentStyle) return;
    minmax_elements= new Array();
    window.attachEvent('onresize', minmax_delayout);
    // make font size listener
    em= document.createElement('div');
    em.setAttribute('id', 'minmax_em');
    em.style.position= 'absolute'; em.style.visibility= 'hidden';
    em.style.fontSize= 'xx-large'; em.style.height= '5em';
    em.style.top='-5em'; em.style.left= '0';
    if (em.style.setExpression) {
      em.style.setExpression('width', 'minmax_checkFont()');
      document.body.insertBefore(em, document.body.firstChild);
    }
  }

  // transform hyphenated properties the browser has not caught to camelCase
  for (i= minmax_props.length; i-->0;)
    if (cs[minmax_props[i][0]])
      st[minmax_props[i][1]]= cs[minmax_props[i][0]];
  // add element with properties to list, store optimal size values
  for (i= minmax_props.length; i-->0;) {
    ms= cs[minmax_props[i][1]];
    if (ms && ms!='auto' && ms!='none' && ms!='0' && ms!='') {
      st.minmaxWidth= cs.width; st.minmaxHeight= cs.height;
      minmax_elements[minmax_elements.length]= el;
      // will need a layout later
      minmax_delayout();
      break;
  } }
}

// check for font size changes

var minmax_fontsize= 0;
function minmax_checkFont() {
  var fs= document.getElementById('minmax_em').offsetHeight;
  if (minmax_fontsize!=fs && minmax_fontsize!=0)
    minmax_delayout();
  minmax_fontsize= fs;
  return '5em';
}

// Layout. Called after window and font size-change. Go through elements we
// picked out earlier and set their size to the minimum, maximum and optimum,
// choosing whichever is appropriate

// Request re-layout at next available moment
var minmax_delaying= false;
function minmax_delayout() {
  if (minmax_delaying) return;
  minmax_delaying= true;
  window.setTimeout(minmax_layout, 0);
}

function minmax_stopdelaying() {
  minmax_delaying= false;
}

function minmax_layout() {
  window.setTimeout(minmax_stopdelaying, 100);
  var i, el, st, cs, optimal, inrange;
  for (i= minmax_elements.length; i-->0;) {
    el= minmax_elements[i]; st= el.style; cs= el.currentStyle;

    // horizontal size bounding
    st.width= st.minmaxWidth; optimal= el.offsetWidth;
    inrange= true;
    if (inrange && cs.minWidth && cs.minWidth!='0' && cs.minWidth!='auto' && cs.minWidth!='') {
      st.width= cs.minWidth;
      inrange= (el.offsetWidth<optimal);
    }
    if (inrange && cs.maxWidth && cs.maxWidth!='none' && cs.maxWidth!='auto' && cs.maxWidth!='') {
      st.width= cs.maxWidth;
      inrange= (el.offsetWidth>optimal);
    }
    if (inrange) st.width= st.minmaxWidth;

    // vertical size bounding
    st.height= st.minmaxHeight; optimal= el.offsetHeight;
    inrange= true;
    if (inrange && cs.minHeight && cs.minHeight!='0' && cs.minHeight!='auto' && cs.minHeight!='') {
      st.height= cs.minHeight;
      inrange= (el.offsetHeight<optimal);
    }
    if (inrange && cs.maxHeight && cs.maxHeight!='none' && cs.maxHeight!='auto' && cs.maxHeight!='') {
      st.height= cs.maxHeight;
      inrange= (el.offsetHeight>optimal);
    }
    if (inrange) st.height= st.minmaxHeight;
  }
}

// Scanning. Check document every so often until it has finished loading. Do
// nothing until <body> arrives, then call main init. Pass any new elements
// found on each scan to be bound   

var minmax_SCANDELAY= 500;

function minmax_scan() {
  var el;
  for (var i= 0; i<document.all.length; i++) {
    el= document.all[i];
    if (!el.minmax_bound) {
      el.minmax_bound= true;
      minmax_bind(el);
  } }
}

var minmax_scanner;
function minmax_stop() {
  window.clearInterval(minmax_scanner);
  minmax_scan();
}

minmax_scan();
minmax_scanner= window.setInterval(minmax_scan, minmax_SCANDELAY);
window.attachEvent('onload', minmax_stop);

@end @*/
 これをテキストエディタにコピーし、「minmax.js」と名前をつけて保存、アップロードして、私の場合でしたら<head>〜</head>の中に
<script type="text/javascript" src="http://blog-imgs-23.fc2.com/c/h/a/charlie432/minmax.js"></script>
を入れてみると、、、、

めでたくIE で max-widthプロパティなどが使えるようになりました!!

ヾ(^o^)人(^ω^)人(^o^)ノ゙


 お困りの方、どうぞお試しくださいd(^∀^)




あわせて読みたいブログパーツ
【関連記事、、、かも?】

★科学、技術、PCなどトラックバック(0) | コメント(0) | top↑
(Newer)<<回文(3) | ホーム | Images and Sounds (06) / Listen to the Light, Meet Me at the Rainbow>>(Older)














管理者にだけ表示を許可する
トラックバックURL
http://charlie432.blog92.fc2.com/tb.php/756-87976638
| ホーム |
Access Counter

現在の閲覧者数
ブログ内検索
最コトリ総全
全記事表示
ページランキング
検索キーワードランキング
iGoogleに追加
Add to Google
新着記事
カテゴリ
月別アーカイブ
RSSフィード
track word


track feed 徒然
PHOTO ST
photo st
Profile

Author:charlie432


うそこ

mixiでも同じHNです

MySpace


【居住地】
東京

【好きな食べ物】
和食全般

【好きな動物】
鳥全般
(焼き鳥ではない)

【好きな言葉】
煩悩具足の凡夫・
火宅無常の世界は、
万のこと皆もって、
空言・たわごと、
真実あることなし
(歎異抄)

【嫌いな言葉】
無難

【戒めの言葉】
愚者は賢者からも学ばず
賢者は愚者からも学ぶ

【好きな音色の楽器】
チェロ
オーボエ
ファゴット
ハープシコード


【好きな音楽】
DREAM THEATER
SYMPHONY X
YNGWIE MALMSTEEN
W.A.MOZART
G.MAHLER
など

【好きなヴォーカリスト】
R.J.Dio
T.Martin
M.Boals
Steve Grimmett
R.Allen
Hyde
黒猫
夢海
など

【好きなギタリスト】
Y.J.Malmsteen
A.Skolnick
J.Petrucci
M.Romeo
T.Tolkki
Rie
など

【似顔絵】
こんな顔をしているようです

【前略プロフィール】
ID:10888330

【血液型】
こんなかんじ