DOBON.NET DOBON.NETプログラミング掲示板過去ログ

画像を表示せずに切り取って保存

環境/言語:[Windows2000/VB.NET2003]
分類:[.NET]

こちらの掲示板やTipsにはいつもお世話になっております。
今回過去ログ等を検索しましたが、目的のログが見つからなかったため
投稿いたします。
VB.NET2003にて写真画像加工システムを作っています。

Tipsより「画像の一部を切り取って表示する」方法はわかったのですが、
表示せずに保存だけするということは可能なのでしょうか?

加工したい画像はJpeg画像です。
指定したフォルダに入っている全Jpegファイルの一部を切り取って
別のフォルダに保存し直したいのです。

クリップボードの画像を表示せずに保存する方法も
見つけたのですが・・・。
利用できそうなのですが、
切り取って一部を表示する方法との関連付けがわかりません。

よろしくお願いします。
基本的な手順は変わりません。PictureBox に描くか、Bitmap に描くかの差だけです。
流れとしては、
・Bitmap を作成
・Graphics を上記の Bitmap から作成
・その Graphics を使って元画像の一部を描画
・保存
となります。
必要なメソッドその他は挙げたクラスを MSDN などで調べてください。
ご返答ありがとうございます。

> 流れとしては、
> ・Bitmap を作成
> ・Graphics を上記の Bitmap から作成
> ・その Graphics を使って元画像の一部を描画
> ・保存
> となります。
> 必要なメソッドその他は挙げたクラスを MSDN などで調べてください。

指示いただいた手順どおり

'画像の一部を切り取って表示する(トリミング)
'Bitmapオブジェクトの作成
Dim bmp = New Bitmap(oFile.FullName)

'Graphicsオブジェクトの作成
Dim g As Graphics = Graphics.FromImage(bmp)

'元の画像の(10,10)-(100,100)の部分を切り取って表示する
'座標(0,0)に表示し、単位をピクセルとする
Dim rect As New Rectangle(10, 10, 100, 100)
g.DrawImage(bmp, 0, 0, rect, GraphicsUnit.Pixel)

'保存
bmp.Save("c:\test.jpg")

'Graphicsオブジェクトを破棄
g.Dispose()

としてみたのですが、元の画像を同じ画像がコピーされるだけでした。

bmp.Save("c:\test.jpg") がまずいということはわかるのですが、
保存の方法がよくわかりません。
g.DrawImage(bmp, 0, 0, rect, GraphicsUnit.Pixel)
したGraphicsオブジェクトをBitmapに変換して
保存するのでしょうか?

変換方法を調べてみたのですが、よくわかりませんでした。
すみませんがもう少し教えてください。
すみません!
以下のように直したら出来ました!!

'画像の一部を切り取って表示する(トリミング)

'描画用のカンバスを作成
Dim dest As Bitmap = New Bitmap(100, 100)
Dim g As Graphics = Graphics.FromImage(dest)

'Bitmapオブジェクトの作成
Dim bmp = New Bitmap(oFile.FullName)

'元の画像の(10,10)-(100,100)の部分を切り取って表示する
'座標(0,0)に表示し、単位をピクセルとする
Dim rect As New Rectangle(10, 10, 100, 100)
g.DrawImage(bmp, 0, 0, rect, GraphicsUnit.Pixel)

'保存
dest.Save("c:\tomotomo.jpg")

'Graphicsオブジェクトを破棄
g.Dispose()

描画用のBitmapオブジェクトの作成が必要だったんですね。
解決です。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板