Thanks Chris, I feel the difference for external png file and SVG are, Fop uses JIMI to handle the external png file, while Batik loads the png image into BufferedImageCachableRed object and fop PDFGraphics2D class handles png image in SVG. The org.apache.fop.svg.PDFGraphics2D class is equivalent to org.apache.fop.image.JimiImage for fop external png file. Both external png file and png in SVG are processed by PDFXObject.output method in the end. With the same png file of size 500x400 and size setting 250x200 in fo, the PDFXObject.output method outputs object info to pdf are, for png in SVG: ++++++++++++++++ 6 0 obj <</Type /XObject /Subtype /Image /Name /Im1 /Length 49745 /Width 1500 /Height 1200 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Mask [255 255 255 255 255 255] /Filter [ /ASCII85Decode /FlateDecode ] >> ++++++++++++++++++++++++ and for external png is ------------------------- 6 0 obj <</Type /XObject /Subtype /Image /Name /Im1 /Length 26341 /Width 500 /Height /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] >> --------------------------- So the object size is different and the object length is different. Thus the question is how to make the PDFGraphics2D to create the same data as JimiImage.
Any help is greatly appreciated. Jay ================================================ List: fop-user Subject: Re: Problem with scaling png image file in svg From: Chris Bowditch <bowditch_chris () hotmail ! com> Date: 2004-02-12 9:55:10 Message-ID: <402B4D7E.7060401 () hotmail ! com> [Download message RAW] Jay Chiu wrote: > Chris and Thomas, > > Can you please give me some help? Please tell me which files I > should change to solve the problem. I have run your sample, and the PNG files referenced by fo:external-graphic are indeed much better quaility than those embedded in SVG using svg:image. I then tried running FOP using -awt option instead of generating a PDF and found that the quality of the PNG files in fo:external-graphic are bad. That is because the AWT renderer probably uses the PDFGraphics2D.drawImage method that you mention. I only saw part of Thomas's response, in which he seems to be implying that the problem is in Batik, but it does seem that there are defficiencies in FOP's image handling algorithms. I believe the images look okay in the PDF Renderer because responsibility for actually rendering the image is passed to acrobat reader. FOP just inserts the image into the PDF. I dont know if theres a way to tell the PDF transcoder to do the same. Perhaps one of the more experienced committers can shed some more light on this matter. Chris ________________________________________________ Get your own "800" number Voicemail, fax, email, and a lot more http://www.ureach.com/reg/tag ---- On Wed, 11 Feb 2004, Jay Chiu ([EMAIL PROTECTED]) wrote: > Chris and Thomas, > > Can you please give me some help? Please tell me which files I > should change to solve the problem. > > Thanks a lot. > > Jay > > > ============================================ > > List: fop-user > Subject: Re: Re: Problem with scaling png image file in svg > From: Jay Chiu <jaychiu () ureach ! com> > Date: 2004-02-10 5:13:26 > > I think changing org.apache.fop.svg.PDFGraphics2D class may > solve the image quality issue. Because PDFGraphics2D class > hangles the image drawing. Can Fop developer please give me > some > help? > > I tried to debug through fop with batik and find the call stack > for handling my png image is as following: > > (1)org.apache.fop.svg.PDFGraphics2D.drawImage(Image img, int x, > int y,ImageObserver observer) > (2)org.apache.batik.ext.awt.image.GraphicsUtil.drawImag(Graphics2D > g2d, CachableRed cr):152 > (3)org.apache.batik.ext.awt.image.GraphicsUtil.drawImag(Graphics2D > g2d, CachableRed cr):439 > (4)org.apache.batik.gvt.primitivePaint(Graphics2D g2d):92 > (5)org.apache.batik.gv.AbstractGraphicsNode.paint(Graphics2D > g2d):485 > (6)org.apache.batik.gvt.CompositeGraphicsNode.primitivePaint(Graphics2D > g2d):130 > (7)org.apache.batik.gv.AbstractGraphicsNode.paint(Graphics2D > g2d):485 > (8)org.apache.batik.gvt.ImageNode.paint(Graphics2D g2d):34 > org.apache.batik.gv.AbstractGraphicsNode.paint(Graphics2D g2d) > > From the call stack info, it is clear that PDFGraphics2D > handles > the actual external image drawing. Can someone change > PDFGraphics2d to use the same approach to handle external image > file as other image handling code in FOP does? > > Thanks. > > Jay > > > ---- On Sat, 07 Feb 2004, Jay Chiu ([EMAIL PROTECTED]) > wrote: > > > > Thanks Thomas, > > > > I guess anyone who includes images in SVG may get the same > > problem. > > > > We are delivering a report tool to client and the client is > > complaining about the chart quality in pdf. Thus we are in a > > hurry to solve this isse. > > > > If someone has already written some code to solve this issue, > > please forward me some of your code. > > > > If it is not too difficult, can you please give me some hint > and > > tell me which file should be changed? I guess probably we may > > take some fop's code to solve this issue, becuase the > > subsampling works fine in Fop. > > > > Thanks a lot. > > > > Jay > > > > > ============================================== > > > Subject: Re: Problem with scaling png image file in svg > > > From: Thomas DeWeese <[EMAIL PROTECTED]> > > > Date: Fri, 06 Feb 2004 06:25:45 -0500 > > > To: [EMAIL PROTECTED] > > > > > > > > > -------------------------------------------------------------------------------- > > > > > > Jay Chiu wrote: > > > > > > > I tried with Batik Squiggle for the png images. If I does > > not > > > > use <g transform="scale(xxx)">, the png image looks good > in > > > the > > > > GUI, it does get scaled properly. But image with scale() > > > > transform attribute losses quality, and the png file > > > generated > > > > by Squiggle is in bad quality. > > > > > > The problem is that you are asking to subsample the > image > > > too much. The large image is reduced by 5x the small by > 10x. > > > Batik does not prefilter for large subsample values so you > > > 'loose' pixels with subsample values this high and the > result > > > is aliasing effects. > > > > > > If anyone wants to write/contribute a block average or > > > better > > > a true prefiltered resample operation I'm sure it would be > > > appreciated. I can help with plugging it into Batik in the > > > right spot. > > > > > > > I am also sending the email to batik-user mail list. Hope > > > Batik > > > > team can also help. > > > > > > > > Attache please find a svg file , a source png file and > > > > generated > > > > png file. > > > > > > > > Thanks a lot. > > > > > > > > Jay > > > > > > > > > > > > > > > > ________________________________________________ > > > Get your own "800" number > > > Voicemail, fax, email, and a lot more > > > http://www.ureach.com/reg/tag > > > > > > > > > > > > > > > ________________________________________________ > Get your own "800" number > Voicemail, fax, email, and a lot more > http://www.ureach.com/reg/tag > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]