Beispiel #1
0
        public static ImageData CreateJpeg2000(byte[] bytes)
        {
            ValidateImageType(bytes, ImageType.JPEG2000);
            ImageData image = new Jpeg2000ImageData(bytes);

            Jpeg2000ImageHelper.ProcessImage(image);
            return(image);
        }
Beispiel #2
0
        public static ImageData CreateJpeg2000(Uri url)
        {
            ValidateImageType(url, ImageType.JPEG2000);
            ImageData image = new Jpeg2000ImageData(url);

            Jpeg2000ImageHelper.ProcessImage(image);
            return(image);
        }
Beispiel #3
0
 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.");
 }
Beispiel #4
0
        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);
            }
            }
        }
Beispiel #5
0
 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);
     }
 }