- 題名: 画像の縮小保存
- 日時: 2005/05/26 18:50:44
- ID: 10961
- この記事の返信元:
- (なし)
- この記事への返信:
- [10963] Re[1]: 画像の縮小保存2005/05/26 19:15:49
- [10964] Re[1]: 画像の縮小保存2005/05/26 19:36:29
- ツリーを表示
■No10988に返信(いくみさんの記事) > PictureBox.Imageから生成したGraphicsでsaveにファイル名が指定できない。 > Bipmapから生成したGraphicsではsaveでファイル名が指定できる。 > という事で理解できました。 どうも、Graphics オブジェクトと Image/Bitmap オブジェクトとの混同があ るみたいですし、途中から PictureBox と PictureBox.Image がすりかわって いますよね。 Graphics オブジェクトは「画家」です。Image/Bitmap/PictureBox オブジェ クトは「キャンバス」です。画家は与えられたキャンバスに向かって絵を描き ます。キャンバスには、Image/Bitmap オブジェクトのように自身に描かれて いる内容をファイルに保存できるものもありますし、PictureBox オブジェク トのように保存できないものもあります。 Graphics.Save メソッドは、画家の状態を保存するものです。キャンバスとは 関係ありません。画家の状態というのは、例えば、「全てのモノを時計まわり に 90 度傾けて描く」といったものです。90 度傾ける、線を描く、Save、さ らに 10 度傾ける、線を描く、Restore (= 90 度の傾きに戻す)、線を描く、 というように使います。 PictureBox と PictureBox.Image の意味するものの違いは、いいですよね。
■No11005に返信(いくみさんの記事) > ImageとPictureBox.Imageは置き換えた例として(別物として) > 載せてしまいましたがPictureBoxとPictureBox.Imageのすり替えと > 指摘されてる部分が思い当たりません。 言葉の選択がよくなかったかもしれません。書き間違えていますよね? くらい の意味です。直接的には No10988 のまとめを指しています。表や後段の記述 にある PictureBox.Image を PictureBox に読み替えると何となく正しい記述 になるからです。 裏を返すと、No10988 のまとめはおかしいんです。PictureBox.Image を元に した Graphics オブジェクトとは、Image オブジェクトの Graphics オブジェ クトです。ですから、描画した結果をファイルに保存できますよね。
分類:[.NET]
はじめまして投稿質問致します。
サンプルを活用させていただき、HighQualityBicubicを用いて
縮小を行い指定画像拡張子で保存したいのです
Form上にdstPictureというPictureBoxを配置しています。
-----------------------------------------------------
dstPicture.Height = 100;
dstPicture.Width = 100;
Bitmap wkBmp = new Bitmap("読み込むファイル名");
Graphics g = dstPicture.CreateGraphics();
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.DrawImage(wkBmp,0,0,dstPicture.Width,dstPicture.Height);
ここで
wkBmp.Save("出力ファイル名", "PNG");
としても セットした100x100のサイズで保存されずに最初のピクセルサイズで
保存されました。
Image stImg = wkBmp.GetThumbnailImage(dstPicture.Width,dstPicture.Height,null,IntPtr.Zero);
stImg.Save("出力ファイル名", "PNG");
wkBmp.Dispose();
g.Dispose();
stImg.Dispose();
とするとようやく100x100のサイズで保存されました。
--------------------------------------------------
補間方法を指定して画像を拡大、縮小表示する の中に
'画像を縮小表示
g.DrawImage(image, 0, 0, 150, 120)
と記載されているこの行を実行する事により
HighQualityBicubicで補間を取りながら縮小されるのだと
解していましたが、私の間違いなのでしょうか?
現にGetThumbnailImageを行わないと縮小できなかったですから。
ご指南宜しくお願いします。