mirror of
https://github.com/wmjordan/PDFPatcher.git
synced 2026-10-18 21:52:34 +08:00
25 lines
692 B
C#
25 lines
692 B
C#
using System;
|
|
using FreeImageAPI;
|
|
using System.Drawing.Imaging;
|
|
|
|
namespace PDFPatcher.Processor.Imaging
|
|
{
|
|
static class JBig2Encoder
|
|
{
|
|
const uint White = 0x00FFFFFF;
|
|
|
|
internal static byte[] Encode(FreeImageBitmap fi) {
|
|
bool zeroIsWhite = fi.HasPalette && (fi.Palette.Data[0].uintValue & White) == White;
|
|
using (var bmp = fi.ToBitmap()) {
|
|
var bits = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format1bppIndexed);
|
|
try {
|
|
return MuPDF.JBig2Codec.LosslessEncode(bmp.Width, bmp.Height, bits.Stride, zeroIsWhite, bits.Scan0, false, false);
|
|
}
|
|
finally {
|
|
bmp.UnlockBits(bits);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|