2012-07-27 50 views
2

我正在用CCIT4壓縮創建tif圖像。此圖像沒有EOFB。有人可以幫助我如何將這個EOFB添加到tif圖像。或者如何用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(); 
     } 

感謝,

也先

+0

我們需要看代碼。 – Hogan 2012-07-27 23:30:57

+0

@Hogan我按照建議添加了我的代碼。 – Esen 2012-07-27 23:44:52

+0

我不擅長這類事情,但我覺得這可能有所幫助:http://www.fileformat.info/format/tiff/corion.htm搜索EOFB。 – jamesbar2 2012-07-31 07:12:19

回答

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(); 
     } 
    } 
1

我知道你想要的C#但見this class在Java語言和搜索所有「addEOFB」