Làm cách nào để thay đổi kích thước/giảm kích thước hình ảnh JPG trong Groovy?Làm cách nào để thay đổi kích thước hình ảnh trong Groovy?
6
A
Trả lời
10
Hoặc, nếu bạn không muốn tải phụ thuộc bên ngoài, chỉ cần thực hiện bình thường bên ngoài:
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
Thư viện imgscalr có API đơn giản để bật tính năng này.
- Tải về jar imgscalr-lib (currently version 4.2)
- Sau đó bạn có thể thay đổi kích thước một hình ảnh trong một cuộc gọi, ví dụ như
Scalr.resize(imageIn, 1800)
- Theo mặc định, tỉ lệ được giữ giống nhau, đối số thứ 2 là widght tối đa (hoặc chiều cao) của hình ảnh mới
Dưới đây là một ví dụ làm việc toàn ...
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()
Hoặc thêm lib imgscalr đến đường dẫn lớp của bạn hoặc gọi groovy với -cp ...
groovy -cp imgscalr-lib-4.2.jar thay đổi kích thước-image.groovy