0

tiff 画像をトリミングできるルーチンを探していましたが、取得しましたが、多くのエラーが発生します。ルーチンは次のとおりです。

Bitmap comments = null;
string input = "somepath";
// Open a Stream and decode a TIFF image
using (Stream imageStreamSource = new FileStream(input, FileMode.Open, FileAccess.Read, FileShare.Read))
{
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);

BitmapSource bitmapSource = decoder.Frames[0];
using (Bitmap b = BitmapFromSource(bitmapSource))
{
Rectangle cropRect = new Rectangle(169, 1092, 567, 200);
comments = new Bitmap(cropRect.Width, cropRect.Height);

//first cropping
using (Graphics g = Graphics.FromImage(comments))
{
g.DrawImage(b, new Rectangle(0, 0, comments.Width, comments.Height),
cropRect,
GraphicsUnit.Pixel);
}
}
}

コンパイルしようとすると、エラーが発生します。Google を検索して多くのアセンブリへの参照を追加しようとしましたが、解決できませんでした。このコードは次の URL から取得しました。

http://snipplr.com/view/63053/

アドバイスを求めています。

4

1 に答える 1

0

TiffBitmapDecoderクラスは、Presentation.Coreつまり WPF からのものです。

BitmapFromSource は、.net フレームワーク クラスのメソッドではありません。このコードを使用して BitmapSource を Bitmap に変換できます。

private Bitmap BitmapFromSource(BitmapSource bitmapsource)
 {
     Bitmap bitmap;
     using (MemoryStream outStream = new MemoryStream())
     {
       BitmapEncoder encoder = new BmpBitmapEncoder();
       encoder.Frames.Add(BitmapFrame.Create(bitmapsource));
       encoder.Save(outStream);
       bitmap = new Bitmap(outStream);
     }
     return bitmap;
 }
于 2012-11-17T16:34:53.550 に答える