จะเข้ารหัส System. Drawing.Bitmap เป็น CCITT ด้วย C# ได้อย่างไร

ฉันต้องเขียนภาพขาวดำเป็นไฟล์ PDF ดังนั้นฉันจึงคิดว่าวิธีที่ดีกว่าคือการใช้ CCITTDecode คำถามคือ ฉันจะบันทึกของฉันได้อย่างไร

System.Drawing.Bitmap img

ไปยังสตรีมไฟล์โดยใช้อัลกอริธึมการเข้ารหัสที่ถูกต้องหรือไม่ ฉันลองด้วยรหัสต่อไปนี้

EncoderParameters eps = new EncoderParameters(1);

eps.Param[0] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionCCITT4);
ImageCodecInfo[] ie = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo tiffEncoder = null;

for (int i = 0; i < ie.Length; i++)
{
    if (ie[i].MimeType == "image/tiff")
    {
        tiffEncoder = ie[i];
        break;
    }
}

img.Save(_stream, tiffEncoder, eps);

แต่เอาต์พุตเป็นไฟล์ TIFF ทั้งหมด (รวมส่วนหัวและเครื่องหมายอื่นๆ ด้วย) ฉันต้องการเพียงข้อมูลดิบ เนื่องจากพารามิเตอร์การถอดรหัสมีให้ในรูปแบบ PDF


person Pincopallino    schedule 21.03.2012    source แหล่งที่มา


คำตอบ (1)


System.Drawing.Bitmap ไม่มีวิธีการใดๆ ในการบันทึกเพียงข้อมูลดิบของรูปภาพ

ฉันคิดว่าคุณจะได้รับบริการที่ดีขึ้นจากห้องสมุดบุคคลที่สามบางแห่งในกรณีนี้ ตัวอย่างเช่น คุณสามารถลองใช้ไลบรารี LibTiff.Net (ผลิตโดยบริษัทของฉัน) ไลบรารีนี้เป็นซอฟต์แวร์โอเพ่นซอร์สฟรี (ใบอนุญาต BSD ที่เป็นมิตรกับเชิงพาณิชย์)

LibTiff.Net สามารถเข้ารหัส System. Drawing.Bitmap โดยใช้ CCITT หรือคุณสามารถเปิดไฟล์ที่เข้ารหัสแล้วได้ หลังจากนั้นคุณสามารถใช้ ReadRawStrip และ ReadRawTile เพื่อเข้าถึงข้อมูลภาพดิบ

นี่คือตัวอย่างที่อาจเป็นประโยชน์สำหรับคุณ:

person Bobrovsky    schedule 22.03.2012