ブログ用 画像ユーティリティ ⑥ 縮小画像の生成

Published 12 March 09 01:42 PM | hiroyuk 

ユーザーコントロール VgaBitmapUC クラスでは、ファイル名が更新されると、UpdateImageメソッドが呼び出され、その中でVGAサイズの画像とモザイク用のビットマップをデコードするCreateSmallImageメソッドを呼び出します。

デコード時に画像のサイズを指定します。 BitmapImage.PixelDecodeWidth を、VGA用には640(_vgaWidth)、モザイク用には32(_vgaWidth / _scale)に指定します。ただし、縦が長い画像の場合には縦を(BitmapImage.PixelDecodeHeightを )640に指定します。縦横比はデコード時に自動的に維持してくれます。どちらのBitmapImageも以降で変更しないのでFreezeして返します。

private readonly int _vgaWidth = 640;
private readonly int _scale = 20;

/// <summary>
/// filenameから指定サイズのBitmapImageを返す
/// </summary>
/// <param name="width"></param>
/// <returns></returns>
private BitmapImage CreateSmallImage(int width, string filename)
{
  BitmapImage image = new BitmapImage();
  image.BeginInit();
  image.UriSource = new Uri(filename);
  image.DecodePixelWidth = width;
  image.EndInit();
  //縦長画像のとき
  if (image.PixelWidth < image.PixelHeight)
  {
    image = new BitmapImage();
    image.BeginInit();
    image.UriSource = new Uri(filename);
    image.DecodePixelHeight = width;
    image.EndInit();
  }
  image.Freeze();
  return image;
}

Comments

No Comments
Anonymous comments are disabled

About hiroyuk

マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。

Search

This Blog

DirectX 情報

Silverlight 情報

Windows 情報

WPF 情報

並列コンピューティング情報

著書

Syndication

Page view tracker