2010-02-12 24 views
11

Bir resmi ölçeklemeyi, değiştirmeyi ve sonra başka bir görüntü biçimine çıkarmayı deniyorum. Şimdiye kadar apache batik kütüphanesini kullanıyorum. Basit dönüşüm için bu kolaydır. Svg kırpma için, bu kolaydır. Ancak, svg tarafından oluşturulan tam görüntüye ölçeklendirme yapamıyorum gibi görünmüyor. Yani, ilgili alanı sınırlayıcı bir dikdörtgen olarak belirtebilirim ve sonra ölçekleme, sınırlama dikdörtgeni üzerinde çalışır, ancak svg'nin görüntüsü üzerinde nasıl ölçeklendirileceğini bilmiyorum. Eğer KEY_AOI kod dönüştürme ipucu set yoksa, o zaman kök <svg> elemana viewBox="" nitelik ilgi alanı belirlemek için kullanılacaktırJava'da bir SVG'yi ölçekleme

... 
//set the output width and height 
transcoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(newSize.width)); 
transcoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, new Float(newSize.height)); 

//set the aoi for scaling. Unsure what to do here. 
transcoder.addTranscodingHint(PNGTranscoder.KEY_AOI, new Rectangle(0, 0, 100, 100)); 
... 

cevap

7

:

Bu defa ne var. Kod çevirme yaptığınız belgenin viewBox="" özniteliği yoksa, width="" ve height="" öznitelikleri kullanılır, böylece AOI (0, 0, genişlik, yükseklik) olur.

Ve

Bunlardan hiçbiri belirlenir ve grafiklerdir belgenin koordinat sistemi içinde, o zaman kök <svg> elemanın sınırlayıcı kutusunu hesaplamak ve AOI olarak kullanıp nerede önceden bilmiyorsanız. Belgeniz için ilk "booting the DOM" bunu yapabilir ve belge öğesinde getBBox() numaralı telefonu arayabilirsin.

+0

Çeşitli SVG görüntüleri ile uğraşacağımdan, muhtemelen bunların hepsini yapmak zorunda kalacağım. Hızlı cevabınız için teşekkür ederim. Bunu bir kez test edebilirim. –

+0

@heycam, lütfen bu soruya bana yardımcı olun http://stackoverflow.com/questions/15286536/outofmemory-while-resizing-svg-file-using-apache-batik – Mihir