GroovyでJPG画像のサイズをどのように変更/縮小しますか?
4520 次
2 に答える
11
または、外部依存関係をロードしたくない場合は、通常どおりにロードします。
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' ) )
}
于 2012-04-27T13:06:55.247 に答える
5
imgscalrライブラリには、これを可能にするシンプルなAPIがあります。
- imgscalr-lib jar (現在のバージョン4.2)をダウンロードします
- その後、1回の呼び出しで画像のサイズを変更できます。
Scalr.resize(imageIn, 1800)
- デフォルトでは、アスペクト比は同じに保たれます。2番目の引数は、新しい画像の最大幅(または高さ)です。
これが完全な実例です...
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()
クラスパスにimgscalrlibを追加するか、-cp...を指定してgroovyを呼び出します。
groovy -cp imgscalr-lib-4.2.jar resize-image.groovy
于 2012-04-27T12:54:39.480 に答える