2

CCIT4 圧縮で tif イメージを作成しています。この画像には EOFB がありません。この EOFB を tif イメージに追加する方法を教えてください。または、EOFB 情報を使用してイメージを作成する方法。

ここにEOFBなしで画像を生成する私のコードがあります

 var tifImg = new Bitmap(500, 500);
        tifImg.SetResolution(200, 200);
        Graphics graphic = Graphics.FromImage(tifImg);
        graphic.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, 500, 500));
        try
        {

                string data = "My data"; 
                Font vrFont = new Font("Verdana", 32, GraphicsUnit.Pixel);
                Size micrSize = TextRenderer.MeasureText(data, vrFont); 
                graphic.DrawString(data, vrFont, new SolidBrush(Color.Black), new Point(10, 100)); 
                Rectangle rectangle = new Rectangle(10, 20, 200, 60);
                graphic.DrawRectangle(new Pen(new SolidBrush(Color.Black)), rectangle);
                SaveImage(tifImg, fileName, appLogger);


        var imageEncoders = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders().ToList();
        var imageCodecInfo = imageEncoders.FirstOrDefault(o => o.MimeType == "image/tiff");

        var encoderParameter = new System.Drawing.Imaging.EncoderParameters(2);
        encoderParameter.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)System.Drawing.Imaging.EncoderValue.CompressionCCITT4);
        encoderParameter.Param[1] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, (long)18);

            tifImg.Save(fileName, imageCodecInfo, encoderParameter); 
        }
        catch { throw; }
        finally
        {
            graphic.Dispose();
            tifImg.Dispose();
        }

ありがとう、

エセン

4

2 に答える 2

1

これは私のプロジェクトで行ったコードです。これが役立つかどうかを確認してください。

 private void AddEOFB(string imgFileName)
    {
        var fs = new FileStream(imgFileName, FileMode.Append, FileAccess.Write);
        try
        {
            fs.Seek(0, SeekOrigin.End);
            var buf = BitConverter.GetBytes(0x00100100);
            fs.Write(buf, 0, buf.Length);
        }
        catch { throw; }
        finally
        {
            fs.Close();
            fs.Dispose();
        }
    }
于 2012-08-02T20:58:00.553 に答える
1

私はあなたがC#を望んでいることを知っていますが、Java言語でこのクラスを見て、すべての"addEOFB"を検索してください。

于 2012-08-02T14:35:08.270 に答える