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/