public static ImageData CreateJpeg2000(byte[] bytes) { ValidateImageType(bytes, ImageType.JPEG2000); ImageData image = new Jpeg2000ImageData(bytes); Jpeg2000ImageHelper.ProcessImage(image); return(image); }
public static ImageData CreateJpeg2000(Uri url) { ValidateImageType(url, ImageType.JPEG2000); ImageData image = new Jpeg2000ImageData(url); Jpeg2000ImageHelper.ProcessImage(image); return(image); }
public static ImageData CreateJpeg2000(byte[] bytes) { byte[] imageType = ReadImageType(bytes); if (ImageTypeIs(imageType, jpeg2000_1) || ImageTypeIs(imageType, jpeg2000_2)) { ImageData image = new Jpeg2000ImageData(bytes); Jpeg2000ImageHelper.ProcessImage(image); return(image); } throw new ArgumentException("JPEG2000 image expected."); }
private static ImageData CreateImageInstance(byte[] bytes, bool recoverImage) { ImageType imageType = ImageTypeDetector.DetectImageType(bytes); switch (imageType) { case ImageType.GIF: { GifImageData image = new GifImageData(bytes); GifImageHelper.ProcessImage(image, 0); return(image.GetFrames()[0]); } case ImageType.JPEG: { ImageData image = new JpegImageData(bytes); JpegImageHelper.ProcessImage(image); return(image); } case ImageType.JPEG2000: { ImageData image = new Jpeg2000ImageData(bytes); Jpeg2000ImageHelper.ProcessImage(image); return(image); } case ImageType.PNG: { ImageData image = new PngImageData(bytes); PngImageHelper.ProcessImage(image); return(image); } case ImageType.BMP: { ImageData image = new BmpImageData(bytes, false); BmpImageHelper.ProcessImage(image); return(image); } case ImageType.TIFF: { ImageData image = new TiffImageData(bytes, recoverImage, 1, false); TiffImageHelper.ProcessImage(image); return(image); } case ImageType.JBIG2: { ImageData image = new Jbig2ImageData(bytes, 1); Jbig2ImageHelper.ProcessImage(image); return(image); } default: { throw new iText.IO.IOException(iText.IO.IOException.ImageFormatCannotBeRecognized); } } }
private static ImageData CreateImageInstance(byte[] bytes, bool recoverImage) { byte[] imageType = ReadImageType(bytes); if (ImageTypeIs(imageType, gif)) { GifImageData image = new GifImageData(bytes); GifImageHelper.ProcessImage(image, 0); return(image.GetFrames()[0]); } else { if (ImageTypeIs(imageType, jpeg)) { ImageData image = new JpegImageData(bytes); JpegImageHelper.ProcessImage(image); return(image); } else { if (ImageTypeIs(imageType, jpeg2000_1) || ImageTypeIs(imageType, jpeg2000_2)) { ImageData image = new Jpeg2000ImageData(bytes); Jpeg2000ImageHelper.ProcessImage(image); return(image); } else { if (ImageTypeIs(imageType, png)) { ImageData image = new PngImageData(bytes); PngImageHelper.ProcessImage(image); return(image); } else { if (ImageTypeIs(imageType, bmp)) { ImageData image = new BmpImageData(bytes, false, 0); BmpImageHelper.ProcessImage(image); return(image); } else { if (ImageTypeIs(imageType, tiff_1) || ImageTypeIs(imageType, tiff_2)) { ImageData image = new TiffImageData(bytes, recoverImage, 1, false); TiffImageHelper.ProcessImage(image); return(image); } else { if (ImageTypeIs(imageType, jbig2)) { ImageData image = new Jbig2ImageData(bytes, 1); Jbig2ImageHelper.ProcessImage(image); return(image); } } } } } } } throw new iText.IO.IOException(iText.IO.IOException.ImageFormatCannotBeRecognized); }
/// <summary>This method checks if the image is a valid JPEG and processes some parameters.</summary> private static void ProcessParameters(Jpeg2000ImageData jp2) { jp2.parameters = new Jpeg2000ImageData.Parameters(); try { if (jp2.GetData() == null) { jp2.LoadData(); } Stream jpeg2000Stream = new MemoryStream(jp2.GetData()); Jpeg2000ImageHelper.Jpeg2000Box box = new Jpeg2000ImageHelper.Jpeg2000Box(); box.length = Cio_read(4, jpeg2000Stream); if (box.length == 0x0000000c) { jp2.parameters.isJp2 = true; box.type = Cio_read(4, jpeg2000Stream); if (JP2_JP != box.type) { throw new iText.IO.IOException(iText.IO.IOException.ExpectedJpMarker); } if (0x0d0a870a != Cio_read(4, jpeg2000Stream)) { throw new iText.IO.IOException(iText.IO.IOException.ErrorWithJpMarker); } Jp2_read_boxhdr(box, jpeg2000Stream); if (JP2_FTYP != box.type) { throw new iText.IO.IOException(iText.IO.IOException.ExpectedFtypMarker); } StreamUtil.Skip(jpeg2000Stream, 8); for (int i = 4; i < box.length / 4; ++i) { if (Cio_read(4, jpeg2000Stream) == JPX_JPXB) { jp2.parameters.isJpxBaseline = true; } } Jp2_read_boxhdr(box, jpeg2000Stream); do { if (JP2_JP2H != box.type) { if (box.type == JP2_JP2C) { throw new iText.IO.IOException(iText.IO.IOException.ExpectedJp2hMarker); } StreamUtil.Skip(jpeg2000Stream, box.length - 8); Jp2_read_boxhdr(box, jpeg2000Stream); } }while (JP2_JP2H != box.type); Jp2_read_boxhdr(box, jpeg2000Stream); if (JP2_IHDR != box.type) { throw new iText.IO.IOException(iText.IO.IOException.ExpectedIhdrMarker); } jp2.SetHeight(Cio_read(4, jpeg2000Stream)); jp2.SetWidth(Cio_read(4, jpeg2000Stream)); jp2.parameters.numOfComps = Cio_read(2, jpeg2000Stream); jp2.SetBpc(Cio_read(1, jpeg2000Stream)); StreamUtil.Skip(jpeg2000Stream, 3); Jp2_read_boxhdr(box, jpeg2000Stream); if (box.type == JP2_BPCC) { jp2.parameters.bpcBoxData = new byte[box.length - 8]; jpeg2000Stream.JRead(jp2.parameters.bpcBoxData, 0, box.length - 8); } else { if (box.type == JP2_COLR) { do { if (jp2.parameters.colorSpecBoxes == null) { jp2.parameters.colorSpecBoxes = new List <Jpeg2000ImageData.ColorSpecBox>(); } jp2.parameters.colorSpecBoxes.Add(Jp2_read_colr(box, jpeg2000Stream)); try { Jp2_read_boxhdr(box, jpeg2000Stream); } catch (Jpeg2000ImageHelper.ZeroBoxSizeException) { } }while (JP2_COLR == box.type); } } } else { //Probably we have reached the contiguous codestream box which is the last in jpeg2000 and has no length. if (box.length == unchecked ((int)(0xff4fff51))) { StreamUtil.Skip(jpeg2000Stream, 4); int x1 = Cio_read(4, jpeg2000Stream); int y1 = Cio_read(4, jpeg2000Stream); int x0 = Cio_read(4, jpeg2000Stream); int y0 = Cio_read(4, jpeg2000Stream); StreamUtil.Skip(jpeg2000Stream, 16); jp2.SetColorSpace(Cio_read(2, jpeg2000Stream)); jp2.SetBpc(8); jp2.SetHeight(y1 - y0); jp2.SetWidth(x1 - x0); } else { throw new iText.IO.IOException(iText.IO.IOException.InvalidJpeg2000File); } } } catch (System.IO.IOException e) { throw new iText.IO.IOException(iText.IO.IOException.Jpeg2000ImageException, e); } }