2012-04-25 38 views
2

テキストを書きたいモノクロのTIFFファイル(1 bpp)があります。 System.Drawing.Imageにロードし、そのイメージからGraphicsオブジェクトをインスタンス化しようとすると、「インデックス付きピクセル形式のイメージからGraphicsオブジェクトを作成できません」というエラーが表示されます。インデックス付きピクセル形式の画像にテキストを書き込む

イメージをJPEGなどのインデックスなしの形式に変換できますが、イメージサイズが非常に大きくなります。

イメージサイズを小さくしたままでこれを達成したいと思います。どのように私はこれらのイメージにテキストを別のフォーマットに変換せずに書き込むことができますか?

+1

これはできません。 16または24または32bppビットマップに書き込み、* 1を1bppビットマップに変換します。 http://stackoverflow.com/questions/273624/c-gdi-create-1bpp-mask-from-image –

+0

少なくとも、3.5では、Jasonの回答に従って可能です - bitmap.Cloneを使用する – Patrick

答えて

1

TIFF画像をサポートするImageMagick.NETのような画像操作APIを使用できます。私はあなたがそれにテキストをレンダリングするためにAnnotateメソッドを使うことができると信じています。

これが役に立ちます。ハンスアンパッサンが残したコメントにアイデアを使用して

1

System.Drawing.Bitmap.Cloneを使用してメモリ内のイメージを変換できます。これは、小さなファイルサイズの要件を満たします。 winformsでTIFが必要な場合は、TiffBitmapEncoderを使用します。

Bitmap bmpTif = new Bitmap(imagePath); 

Bitmap bmp = bmpTif.Clone(new Rectangle(0, 0, pageWidth, pageHeight), 
    PixelFormat.Format32bppRgb); 

Graphics g = Graphics.FromImage(bmp); 

// Do your g.DrawString's 

Bitmap bmpNew = bmp.Clone(new Rectangle(0, 0, pageWidth, pageHeight), 
    PixelFormat.Format1bppIndexed); 
bmpNew.Save(imagePath2); 
関連する問題