The image is decompressed and then "injected" into the PDF. Same with EVERY TYPE of image EXCEPT JPEG.
-----Original Message----- From: Fernando Gomes [mailto:fernandogomes...@hotmail.com] Sent: Tuesday, February 23, 2010 3:21 PM To: itext-questions@lists.sourceforge.net Subject: Re: [iText-questions] Using Images extracted from a pdf ty .. I have a question. when I insert an image that is not jpeg what exactly happens with this? say that it is in PNG it is decompressed to be "injected" into PDF? or she keeps your PNG format, but the bytes are encoded with the FlateEncode .. a matter of finding the filter and decode do I get it. and if the image is uncompressed before being inserted to PDF, how do I know which type of encode the image? Leonard Rosenthol-3 wrote: > > Bits per pixel is the BitsPerComponent value in the image object > > Pixels per line (POR LINHA) is _NOT_ Width * bits. It's Width * > NumComponents, where NumComponents is based on the colorspace in question > (eg. RGB == 3, CMYK == 4). > > -----Original Message----- > From: Fernando Gomes [mailto:fernandogomes...@hotmail.com] > Sent: Tuesday, February 23, 2010 2:00 PM > To: itext-questions@lists.sourceforge.net > Subject: Re: [iText-questions] Using Images extracted from a pdf > > > > >> public static BufferedImage createBufferedImageFromRawBytes(byte[] >> bytes,int width, int height, int bits) throws BadElementException, >> MalformedURLException, IOException { >> com.lowagie.text.Image img = >> com.lowagie.text.Image.getInstance(bytes); >> >> DataBuffer db = new DataBufferByte (img.getRawData(), >> img.getRawData().length); >> >> WritableRaster raster = Raster.createPackedRaster(db, >> //DATA BUFFER >> >> width, //LARGURA >> >> height, //ALTURA >> >> width*bits, >> //LARGURA * BITS POR PIXEL = PIXEL POR LINHA >> ->scanlineStride >> // >> bits, //BITS POR >> PIXEL ->pixelStride >> >> new int [] {bits}, >> >> >> >> null); >> >> ColorSpace cs = ColorSpace.getInstance >> (img.getColorspace()); >> ColorModel cm = new ComponentColorModel(cs, false, >> false, >> Transparency.OPAQUE, db.getDataType()); >> BufferedImage bi = new BufferedImage (cm, raster, >> false, null); >> return null; >> } >> >> > > this code is up to where I could get, but there are variables that I know > of > to generate bufferedImage, please someone help me see if I'm on track. > If I write something wrong. > > > > Fernando Gomes wrote: >> >> can anyone help-me one more time.. >> i dont know what i do .. >> >> I need to get the image bytes, now decoded... >> >> String colorSpace = pdfStrem.get(PdfName.COLORSPACE).toString(); >>> String >>> filter = pdfStrem.get(PdfName.FILTER).toString(); >>> int >>> bits = >>> Integer.valueOf(pdfStrem.get(PdfName.BITSPERCOMPONENT).toString()); >>> int >>> width = >>> Integer.valueOf(pdfStrem.get(PdfName.WIDTH).toString()); >>> int >>> height = >>> Integer.valueOf(pdfStrem.get(PdfName.HEIGHT).toString()); >>> >>> PdfDictionary param = >>> (PdfDictionary)pdfStrem.get(PdfName.DECODEPARMS); >>> int >>> colors = >>> Integer.valueOf(param.get(PdfName.COLORS).toString()); >>> int >>> predictor = >>> Integer.valueOf(param.get(PdfName.PREDICTOR).toString()); >>> int >>> colums = >>> Integer.valueOf(param.get(PdfName.COLUMNS).toString()); >>> >>> if(filter.equals("/FlateDecode")) >>> { >>> >>> byte[] bytesDecod = PdfReader.FlateDecode(bytes); >> >> these are all the information that I can withdraw PDF >> >> I have to do to create my image in general .. >> I'm trying to do, or learn, but this hard, all my attempts have failed. >> ty >> >> >> Fernando Gomes wrote: >>> >>> Sirs, really sorry for duplicating, can delete other topics ? >>> so sorry ..:blush: >>> >>> very thkx for help.. >>> and so good fast help .. >>> i will estudy more .. >>> >>> >>> Leonard Rosenthol-3 wrote: >>>> >>>> You are assuming that PDF maintains the PNG nature of the image - that >>>> is NOT the case. PDF only supports two kinds of images JPEG (which is >>>> why this works) and "raw bitmaps" (aka an array of bits). So in your >>>> case, with the PNG, it is transcoded into the latter case and so if you >>>> want it back you will need to reverse the process on your end. >>>> >>> >>> >>> for this response in other same email :blush: >>> quote of "1T3XT info" below .. >>> >>> really thanks. I must have seen the realance the chapter that you >>> mentioned, I will read again and very carefully. My English is very >>> weak, >>> and it is very difficult to read. >>> >>> you are very funny, I laughed a lot. I know I deserved the scolding. >>> Really thanks for your help. I will test and then come back to post the >>> result. >>> Thank you! >>> >>> >>> 1T3XT info wrote: >>>> >>>> Fernando Henrique Gomes wrote: >>>>> the problem is when I insert an image in PNG format and then try to >>>>> get >>>>> the same... >>>> >>>> OK, we're talking about a PNG. >>>> If you've read chapter 10 of the 2nd edition of "iText in Action", >>>> you know that PNGs are transformed into zipped pixels. >>>> If you didn't know, you should read the book! >>>> >>>>> on here i try to take that image... >>>>> >>>>> [code] >>>>> int XrefIndex =((PRIndirectReference)obj).getNumber(); >>>>> PdfObject pdfObj = pdf.getPdfObject(XrefIndex); >>>>> PdfStream pdfStrem = (PdfStream)pdfObj; >>>>> byte[] bytes = >>>>> PdfReader.getStreamBytesRaw((PRStream)pdfStrem); >>>>> if ((bytes != null)) { >>>>> String fileName = "Image_P"+pageNumber+"_"; >>>>> File file = new File(fileName); >>>>> FileOutputStream fw = new FileOutputStream(file); >>>>> fw.write(bytes); >>>>> fw.flush(); >>>>> fw.close(); >>>>> BufferedImage img2 = ImageIO.read(file); >>>>> com.lowagie.text.Image img = >>>>> com.lowagie.text.Image.getInstance(file.toURL()); >>>>> } >>>>> [/code] >>>>> >>>>> img2 returned a null !!!! >>>> >>>> Of course, why do you think that would work??? >>>> >>>>> in line of img .. has a Excpetion >>>>> "Image_P1_ is not a recognized imageformat" >>>> >>>> Of course, you're sending iText a bunch of pixels, >>>> but: what are the dimensions of the image, >>>> how many bits are there per component? >>>> >>>>> when i try to do : >>>>> [code] >>>>> Image image = Toolkit.getDefaultToolkit().createImage(bytes); >>>>> [code] >>>>> >>>>> and before create an image from this image getting the width and >>>>> height >>>>> from my PdfStream (create a buffered and draw the image) >>>>> when i serialize on a file and visualize this.. this image in a >>>>> fucking >>>>> black picture .. all black -.- >>>> >>>> It's because you don't have a fucking clue about what you're doing :P >>>> Hehe, I was waiting for an occasion to use the F* word on the list. >>>> Thanks! >>>> >>>>> if i use JPEG encode for my images.. all the 3 solution i have .. its >>>>> ok.. have effects.. >>>> >>>> Well, that's because iText stores JPEGs literally as a JPEG without >>>> changing any of the bytes. If you look inside, you'll see that the >>>> filter is DCTDecode (Discrete Cosine Transform). >>>> >>>>> i can vizualize my images how to i create then .. perfect.. >>>>> but if i change de JPEG ... for any other encode.. thats not have >>>>> efect >>>>> .. >>>> >>>> No idea what you're saying here, but you also need to study images. >>>> >>>>> can any help-me plz ? >>>> >>>> This example doesn't involve iText, but explains what you're missing. >>>> >>>> Let's create an image byte per byte: >>>> >>>> byte b[] = new byte[256 * 3]; >>>> for (int i = 0; i < 256; i++) { >>>> b[i * 3] = (byte) (255 - i); >>>> b[i * 3 + 1] = (byte) (255 - i); >>>> b[i * 3 + 2] = (byte) i; >>>> } >>>> >>>> This is how a PNG, GIF, and some other image types are stored >>>> in a PDF, but in zipped format (FlateDecode). These bytes don't >>>> make any sense if you don't know the bpc, color space and dimensions. >>>> >>>> If you want to create an image from this bytes, you could do this: >>>> >>>> DataBuffer db = new DataBufferByte(b, b.length); >>>> WritableRaster raster = Raster.createInterleavedRaster( >>>> db, 16, 16, 48, 3, new int[]{0,1,2}, null); >>>> ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); >>>> ColorModel cm = new ComponentColorModel( >>>> cs, false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE); >>>> BufferedImage bi = new BufferedImage(cm, raster, false, null); >>>> ImageIO.write(bi, "bmp", new File("hello.bmp")); >>>> >>>> In this example, I treat the image as 16 x 16 pixels, using RGB, >>>> and converting it to a Bitmap. It's up to you to adapt the example >>>> if your image is a GrayScale or CMYK image, or if you want another >>>> format. >>>> >>>> (And please don't post the same question multiple times!!!) >>>> -- >>>> This answer is provided by 1T3XT BVBA >>>> http://www.1t3xt.com/ - http://www.1t3xt.info >>>> >>>> ------------------------------------------------------------------------------ >>>> Download Intel® Parallel Studio Eval >>>> Try the new software tools for yourself. Speed compiling, find bugs >>>> proactively, and fine-tune applications for parallel performance. >>>> See why Intel Parallel Studio got high marks during beta. >>>> http://p.sf.net/sfu/intel-sw-dev >>>> _______________________________________________ >>>> iText-questions mailing list >>>> iText-questions@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/itext-questions >>>> >>>> Buy the iText book: http://www.1t3xt.com/docs/book.php >>>> Check the site with examples before you ask questions: >>>> http://www.1t3xt.info/examples/ >>>> You can also search the keywords list: >>>> http://1t3xt.info/tutorials/keywords/ >>>> >>>> >>> >>> >>> >>> >> >> > > -- > View this message in context: > http://old.nabble.com/Using-Images-extracted-from-a-pdf-tp27693711p27708516.html > Sent from the iText - General mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > iText-questions mailing list > iText-questions@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/itext-questions > > Buy the iText book: http://www.1t3xt.com/docs/book.php > Check the site with examples before you ask questions: > http://www.1t3xt.info/examples/ > You can also search the keywords list: > http://1t3xt.info/tutorials/keywords/ > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > iText-questions mailing list > iText-questions@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/itext-questions > > Buy the iText book: http://www.1t3xt.com/docs/book.php > Check the site with examples before you ask questions: > http://www.1t3xt.info/examples/ > You can also search the keywords list: > http://1t3xt.info/tutorials/keywords/ > > -- View this message in context: http://old.nabble.com/Using-Images-extracted-from-a-pdf-tp27693711p27709815.html Sent from the iText - General mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ iText-questions mailing list iText-questions@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.1t3xt.com/docs/book.php Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/ ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ iText-questions mailing list iText-questions@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.1t3xt.com/docs/book.php Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/