You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by "Luis Bernardo (JIRA)" <ji...@apache.org> on 2015/06/24 10:58:04 UTC

[jira] [Updated] (BATIK-1071) Not being adjusted the hint about scaling of .svg using "PNGTranscoder" for converting .svg to .png

     [ https://issues.apache.org/jira/browse/BATIK-1071?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Luis Bernardo updated BATIK-1071:
---------------------------------
    Fix Version/s:     (was: 1.7)
                   trunk

> Not being adjusted the hint about scaling of .svg using "PNGTranscoder" for converting .svg to .png
> ---------------------------------------------------------------------------------------------------
>
>                 Key: BATIK-1071
>                 URL: https://issues.apache.org/jira/browse/BATIK-1071
>             Project: Batik
>          Issue Type: Bug
>          Components: SVG Rasterizer
>    Affects Versions: 1.7
>         Environment: Not important
>            Reporter: DongSoo,Lee
>            Priority: Minor
>              Labels: Transcoder, png, scale
>             Fix For: trunk
>
>
> In case of converting ".svg" to ".png",
> it occurs not to be applied the hints about scaling of ".png" using PNGTranscoder.
> For instance of the codes occurring bugs, here it is.
> (Some not important codes are omitted..)
> ==================================================
> PNGTranscoder tr = new PNGTranscoder();
> tr.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(w) );
> tr.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, new Float(h) );
> tr.addTranscodingHint(PNGTranscoder.KEY_AOI, new Rectangle(0,0,svgRealWidth,svgRealHeight ) );
> TranscoderInput trIn = new TranscoderInput(svgDoc);
> TranscoderOutput trOut = new TranscoderOutput(new FileOutputStream("xx.png", true) );
> tr.transcode(trIn, trOut);
> ==================================================
> After running these codes, you will be able to get the terrible image(.png).
> The png image will be a part of the original svg image.
> So I checked the classes "PNGTranscoder", "ImageTranscoder", "SVGAbstractTranscoder"  among the involved classes.
> And then, I found the wrong point from them.
> ==================================================
> On "SVGAbstractTranscoder" class
> especially line 289 "this.root = gvtRoot;
>  => If the instance of CanvasGraphicsNode is not null,  the instance of CanvasGraphicsNode obviously has the transforming information which referred the 'Px' variable(especially "AffineTransform")
>       And then, the "AffineTransform" instance is initialized.(the line 284)
>  => But on the line 289, 'this.root' is assigned 'gvtRoot' that doesn't have the transforming information which referred the 'Px'(the instance of 'AffineTransform').
>       So, the child class "ImageTranscoder" can't get the transforming information(especially scale). Because the variable "curTxf" is already initialized by the parent class.(Refer to the line 103 "renderer.setTransform(curTxf );")
> So, as a result, I think the line 289 codes on "SVGAbstractTranscoder" need to be changed like the below codes..
>  => this.root = cgn;
> And the line 103 codes on "ImageTranscoder" also need to be changed like the below codes
>  => renderer.setTransform(this.root.getTransform() );
> ==================================================
> I hope this bug reporting will be useful to improve Apache Batik project.
> If there are some wrong in my reporting, plz let me know..



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-dev-help@xmlgraphics.apache.org