PDF에서 이미지를 추출하고 싶습니다. 지금 iTextSharp를 사용하고 있습니다. 일부 이미지는 올바르게 추출 할 수 있지만 대부분 이미지에 올바른 색이없고 왜곡되어 있습니다. 나는 다른있는 PixelFormats 몇 가지 실험을했다,하지만 난이 이미지-유형 구분하는 코드입니다 ... 내 문제에 대한iTextSharp를 사용하여 Exctract FlateDecode 이미지
을 솔루션을하지 않았다 :
if (filter == "/FlateDecode")
{
// ...
int w = int.Parse(width);
int h = int.Parse(height);
int bpp = tg.GetAsNumber(PdfName.BITSPERCOMPONENT).IntValue;
byte[] rawBytes = PdfReader.GetStreamBytesRaw((PRStream)tg);
byte[] decodedBytes = PdfReader.FlateDecode(rawBytes);
byte[] streamBytes = PdfReader.DecodePredictor(decodedBytes, tg.GetAsDict(PdfName.DECODEPARMS));
PixelFormat[] pixFormats = new PixelFormat[23] {
PixelFormat.Format24bppRgb,
// ... all Pixel Formats
};
for (int i = 0; i < pixFormats.Length; i++)
{
Program.ToPixelFormat(w, h, pixFormats[i], streamBytes, bpp, images));
}
}
이것은에 코드입니다 이미지를 MemoryStream에 저장하십시오. 이미지를 폴더에 저장하는 것은 나중에 구현됩니다.
private static void ToPixelFormat(int width, int height, PixelFormat pixelformat, byte[] bytes, int bpp, IList<Image> images)
{
Bitmap bmp = new Bitmap(width, height, pixelformat);
BitmapData bmd = bmp.LockBits(new Rectangle(0, 0, width, height),
ImageLockMode.WriteOnly, pixelformat);
Marshal.Copy(bytes, 0, bmd.Scan0, bytes.Length);
bmp.UnlockBits(bmd);
using (var ms = new MemoryStream())
{
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);
bytes = ms.GetBuffer();
}
images.Add(bmp);
}
도와주세요.
5.1.3 이상의 새로운 기능을 사용하여이 응답을 확인하십시오. http://stackoverflow.com/a/8511314/231316 –
그 해결책이 효과적 일 수 있습니다 (첫 번째 예제). 그러나 색상은 여전히 역 또는 왜곡되어 있습니다. 답장을 보내 주셔서 감사합니다. –