2012-04-27 5 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가 있습니다.

  • 다운로드 그런 다음 하나의 호출에서 이미지 크기를 조정할 수 있습니다 (currently version 4.2)
  • imgscalr-lib 디렉토리 항아리, 예를 들어 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-LIB-4.2.jar, 사이즈 변경 image.groovy

관련 문제