你如何在Groovy中调整图片大小?

6

在 Groovy 中,您如何调整/减小 JPG 图像的大小?

2个回答

12

或者,如果你不想加载外部依赖项,只需按照正常方式操作:

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-lib jar 包 (当前版本为 4.2)
  • 您可以使用一个函数调整图像大小,例如 Scalr.resize(imageIn, 1800)
  • 默认情况下保持纵横比一致,第二个参数为新图像的最大宽度(或高度)

这里是一个完整的工作示例...

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库添加到你的类路径中,要么使用-cp选项调用groovy...

groovy -cp imgscalr-lib-4.2.jar resize-image.groovy


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接