2012-04-27 16 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 है।

  • डाउनलोड imgscalr-लिब जार (currently version 4.2)
  • फिर आप एक कॉल में एक छवि का आकार कर सकते हैं, जैसे Scalr.resize(imageIn, 1800)
  • डिफ़ॉल्ट रूप से पहलू अनुपात एक ही रखा जाता है, 2 तर्क अधिकतम 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() 

या तो अपने वर्ग पथ के लिए imgscalr lib जोड़ सकते हैं या -cp साथ ग्रूवी फोन ...

ग्रूवी -cp imgscalr-लिब-4.2.jar आकार बदलने-image.groovy

संबंधित मुद्दे