画像のサイズを変更する
- Javaで画像の縦横のサイズを変更する方法のサンプルです。
- gif形式のファイルは、png形式に変更されます。(適切なImageWriterがみつからなかったので)
- X WindowなしのUNIX環境で動作させるには、以下のいずれかが必要です
-起動時に-Djava.awt.headless=trueを指定する
-PJA
-Xvfb
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.imageio.stream.*;public class Twinspark{
public static void main(String[] args){
if(args.length < 2){
System.out.println("Usage:");
System.out.println(" java Twinspark InputImageFile OutPutWidthInPixel");
System.exit(0);
}String inputFileName = args[0];
int outputWidth = 0;
try{
outputWidth = Integer.parseInt(args[1]);
}catch(Throwable e){
System.out.println("OutPutWidthInPixel must be in Integer!");
e.printStackTrace();
System.exit(0);
}
if(outputWidth == 0){
System.out.println("OutPutWidthInPixel must be larger than 0!");
}
BufferedImage image = null;
try{
File inputFile = new File(inputFileName);
image = ImageIO.read(inputFile);
}catch(IOException e){
System.out.println("InputFile is not Found!");
e.printStackTrace();
System.exit(0);
}String extension = inputFileName.substring(inputFileName.lastIndexOf(".") +1);
if(extension.toUpperCase().equals("GIF")){
extension = "png";
inputFileName = inputFileName.toLowerCase().replaceAll("\\.gif",".png");
}
Image outputImage = image.getScaledInstance(outputWidth,-1,Image.SCALE_SMOOTH);BufferedImage bffImg = new BufferedImage(outputWidth,image.getHeight(null)* outputWidth /image.getWidth(null),BufferedImage.TYPE_3BYTE_BGR);
Graphics offg = bffImg.createGraphics();
offg.drawImage(outputImage, 0, 0, null);
try{
File outputFile = new File("after_" + inputFileName);
FileImageOutputStream fio = new FileImageOutputStream(outputFile);ImageWriter iw = (ImageWriter) (ImageIO.getImageWritersBySuffix(extension)).next();
iw.setOutput(fio);
iw.write(bffImg);
}catch(Exception e){
e.printStackTrace();
}
}
}