2012-04-27 11 views

答えて

10

または、あなたの場合外部依存関係をロードする必要はありません。通常は次のようにします。

import static java.awt.RenderingHints.* 
import java.awt.image.BufferedImage 
import javax.imageio.ImageIO 

def img = ImageIO.read(new File('/tmp/image.png')) 

def scale = 0.5 

int newWidth = img.width * scale 
int newHeight = img.height * scale 

new BufferedImage(newWidth, newHeight, img.type).with { i -> 
    createGraphics().with { 
    setRenderingHint(KEY_INTERPOLATION, VALUE_INTERPOLATION_BICUBIC) 
    drawImage(img, 0, 0, newWidth, newHeight, null) 
    dispose() 
    } 
    ImageIO.write(i, 'png', new File('/tmp/scaled.png')) 
} 
5

imgscalrライブラリにはこれを可能にする簡単なAPIがあります。

  • ダウンロードあなたはその後、1回の呼び出しで画像のサイズを変更することができ(currently version 4.2)
  • imgscalr-libのjarファイル、例えばScalr.resize(imageIn, 1800)アスペクト比が同じに保たれているデフォルトでは
  • は、第二引数は最大widghtである(またはここでは、新たな画像

の高さ)は、完全な作業例です...

import org.imgscalr.Scalr 
import java.awt.image.BufferedImage 
import javax.imageio.ImageIO 

def imageFile = new File("C:\\resize-image\\fullsize.jpg") 
def imageIn = ImageIO.read(imageFile); 
def newFile = new File("C:\\resize-image\\resized.jpg") 

BufferedImage scaledImage = Scalr.resize(imageIn, 1800); 
ImageIO.write(scaledImage, "jpg", newFile); 

println "Before: Width:"+imageIn.getWidth()+" Height:"+imageIn.getHeight()+" Size: "+ imageFile.size() 
println "After: Width:"+scaledImage.getWidth()+" Height:"+scaledImage.getHeight() +" Size: "+ newFile.size() 

グルーヴィー-cp imgscalr-LIB-4.2.jarをクラスパスにimgscalrのlibが追加または-cpとグルーヴィーな呼び出し...

どちらのサイズを変更-image.groovy

関連する問題