[cairo] High Quality ImagePattern Scaling

Andrew Ingram andrew.ingram at titanemail.com
Wed Aug 27 04:28:34 PDT 2008


Sorry to pester about this, I don't mind if what I want can't be done 
with Cairo, I'd just prefer to know one way or the other so I can try 
something else if I need to.

- Andrew

Andrew Ingram wrote:
> Hi all,
>
> Having explored other options i've come to try using pycairo to resize 
> and rotate some png images. The problem i'm having is that no matter 
> what options I specify, I can't seem to get the resized images to be of 
> a high quality, the output is very pixelated even without rotating.
>
> This is my algorithm:
>
> image = cairo.ImageSurface.create_from_png(path)
>    
> # some mathsy calculations
>    
> pattern = cairo.SurfacePattern(image)
> pattern.set_filter(cairo.FILTER_BEST)
>    
> surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
> context = cairo.Context(surface)
>    
> context.set_antialias(cairo.ANTIALIAS_SUBPIXEL)
>
> context.rectangle (0,0,WIDTH,HEIGHT)
> context.translate(H_SHIFT,V_SHIFT)
> context.scale(scaleX,scaleY)  
> context.rotate(math.radians(float(rotate)))
>
> context.set_source(pattern)
> context.fill()
>    
> output = cStringIO.StringIO()
> surface.write_to_png(output)
>
>
> I've tried using PIL to achieve this but the quality for rotations was 
> very poor, cairo seems to do rotations to a reasonable quality but 
> resizing is a different matter.
>
> Regards,
> Andrew Ingram
>   

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________


More information about the cairo mailing list