回答:
File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);
NullPointerException
、使用するif (outputfile.exists())
クラスのBufferedImage
書き込みメソッドを使用してオブジェクトを保存できますjavax.imageio.ImageIO
。メソッドのシグネチャは次のとおりです。
public static boolean write(RenderedImage im, String formatName, File output) throws IOException
これim
は、RenderedImage
書き込まれるformatName
であり、形式の非公式名(例:png)を含むString であり、output
書き込まれるファイルオブジェクトです。PNGファイル形式のメソッドの使用例を以下に示します。
ImageIO.write(image, "png", file);
答えは、Javaドキュメントのチュートリアル「画像の書き込み/保存」にあります。
このImage I/O
クラスは、画像を保存するための次のメソッドを提供します。
static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException
チュートリアルでは、
BufferedImageクラスは、RenderedImageインターフェースを実装します。
そのため、メソッドで使用できます。
例えば、
try {
BufferedImage bi = getMyImage(); // retrieve image
File outputfile = new File("saved.png");
ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
// handle exception
}
APIに従って、メソッドが「書き込み中にエラーが発生した場合」をスローするため、write
呼び出しをtryブロックで囲むことが重要です。IOException
また、メソッドの目的、パラメーター、戻り値、およびスローについても詳しく説明します。
指定された形式をサポートする任意のImageWriterを使用して画像をファイルに書き込みます。ファイルがすでに存在する場合、その内容は破棄されます。
パラメーター:
im-書き込まれるRenderedImage
formatName-形式の非公式名を含む文字列。
output-書き込まれるファイル。
戻り値:
適切なライターが見つからない場合はfalse。
スロー:
IllegalArgumentException-パラメータがnullの場合。
IOException-書き込み中にエラーが発生した場合。
ただし、formatName
それでも、あいまいで曖昧に見える場合があります。チュートリアルは少しそれをクリアします:
ImageIO.writeメソッドは、「PNGライタープラグイン」を書き込むPNGを実装するコードを呼び出します。Image I / Oは拡張可能であり、幅広いフォーマットをサポートできるため、プラグインという用語が使用されます。
ただし、次の標準画像形式プラグイン:JPEG、PNG、GIF、BMP、WBMPは常に存在します。
ほとんどのアプリケーションでは、これらの標準プラグインの1つを使用するだけで十分です。彼らはすぐに利用できるという利点があります。
ただし、使用できる追加の形式があります。
Image I / Oクラスは、使用可能な追加のフォーマットのサポートをプラグインする方法を提供し、そのようなプラグインが多数存在します。システムでロードまたは保存できるファイル形式に関心がある場合は、ImageIOクラスのgetReaderFormatNamesメソッドとgetWriterFormatNamesメソッドを使用できます。これらのメソッドは、このJREでサポートされているすべてのフォーマットをリストした文字列の配列を返します。
String writerNames[] = ImageIO.getWriterFormatNames();
返される名前の配列には、インストールされている追加のプラグインが含まれ、これらの名前のいずれかをイメージライターを選択するためのフォーマット名として使用できます。
完全で実用的な例については、Oracleの例を参照できますSaveImage.java
。
java.awt.image.bufferedImageを作成してファイルに保存します。
import java.io.*;
import java.awt.image.*;
import javax.imageio.*;
public class Main{
public static void main(String args[]){
try{
BufferedImage img = new BufferedImage(
500, 500, BufferedImage.TYPE_INT_RGB );
File f = new File("MyFile.png");
int r = 5;
int g = 25;
int b = 255;
int col = (r << 16) | (g << 8) | b;
for(int x = 0; x < 500; x++){
for(int y = 20; y < 300; y++){
img.setRGB(x, y, col);
}
}
ImageIO.write(img, "PNG", f);
}
catch(Exception e){
e.printStackTrace();
}
}
}
ノート:
あなたのコードで:
import static org.imgscalr.Scalr.*;
public static BufferedImage resizeBufferedImage(BufferedImage image, Scalr.Method scalrMethod, Scalr.Mode scalrMode, int width, int height) {
BufferedImage bi = image;
bi = resize( image, scalrMethod, scalrMode, width, height);
return bi;
}
// Save image:
ImageIO.write(Scalr.resize(etotBImage, 150), "jpg", new File(myDir));