下面列出了怎么用javax.imageio.stream.FileImageOutputStream的API类实例代码及写法,或者点击链接到github查看源代码。
public static void main(String[] args) throws IOException, FontFormatException {
String path = FontsTest.class.getResource("/").getPath().split("build")[0] + "src/main/resources/fonts/";
String[] fontNames = new String[] {"001.ttf", "002.ttf", "003.ttf", "004.ttf"};
BufferedImage image = new BufferedImage(1000, 300, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics2D graphics = image.createGraphics();
graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
// 图形抗锯齿
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 字体抗锯齿
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, 1000, 300);
graphics.setColor(Color.BLACK);
for (int i = 0; i < fontNames.length; i++) {
String fontName = fontNames[i];
Font font = Font.createFont(Font.TRUETYPE_FONT, new File(path + fontName));
graphics.setFont(font.deriveFont(Font.BOLD, 20F));
graphics.drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-×=?", 20, 50 * (i + 1));
}
ImageIO.write(image, "JPEG", new FileImageOutputStream(new File("C:\\Users\\dream.lu\\Desktop\\test\\1.jpg")));
}
private void writeUInt16ParamChoiceToFile(File file, int selector, int value) throws IOException
{
final FileImageOutputStream stream = new FileImageOutputStream(file);
switch (selector)
{
case 1:
stream.writeByte(value);
break;
case 2:
case 3:
case 4:
stream.writeShort(value);
break;
case 5:
case 6:
break;
default:
stream.writeInt(value);
}
stream.close();
}
private void writeUInt32ParamChoiceToFile(File file, long selector, int value) throws IOException
{
final FileImageOutputStream stream = new FileImageOutputStream(file);
if (selector == 1)
{
stream.writeByte(value);
}
else if (selector == 2 || selector == 3 || selector == 4)
{
stream.writeShort(value);
}
else if (selector != 5 && selector != 6)
{
stream.writeInt(value);
}
stream.close();
}
private void writeUInt64ParamChoiceToFile(File file, BigInteger selector, int value) throws IOException
{
final FileImageOutputStream stream = new FileImageOutputStream(file);
if (selector.compareTo(new BigInteger("1")) == 0)
stream.writeByte(value);
else if (selector.compareTo(new BigInteger("2")) == 0 || selector.compareTo(new BigInteger("3")) == 0 ||
selector.compareTo(new BigInteger("4")) == 0)
stream.writeShort(value);
else if (selector.compareTo(new BigInteger("5")) == 0 || selector.compareTo(new BigInteger("6")) == 0)
;
else
stream.writeInt(value);
stream.close();
}
private void writeDefaultEmptyChoiceToFile(File file, byte tag, short value) throws IOException
{
final FileImageOutputStream stream = new FileImageOutputStream(file);
switch (tag)
{
case 1:
stream.writeByte(value);
break;
case 2:
stream.writeShort(value);
break;
default:
break;
}
stream.close();
}
public void createImage(String format, int style, float size, String out, Color bg, Color fg, boolean transparency) {
TeXIcon icon = createTeXIcon(style, size);
icon.setInsets(new Insets(1, 1, 1, 1));
int w = icon.getIconWidth(), h = icon.getIconHeight();
BufferedImage image = new BufferedImage(w, h, transparency ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
if (bg != null && !transparency) {
g2.setColor(bg);
g2.fillRect(0, 0, w, h);
}
icon.setForeground(fg);
icon.paintIcon(null, g2, 0, 0);
try {
FileImageOutputStream imout = new FileImageOutputStream(new File(out));
ImageIO.write(image, format, imout);
imout.flush();
imout.close();
} catch (IOException ex) {
System.err.println("I/O error : Cannot generate " + out);
}
g2.dispose();
}
public static void main(String[] args) {
try {
File f = new File("ImageInputStreamFromRAF.tmp");
RandomAccessFile raf = new RandomAccessFile(f, "rw");
ImageInputStream istream = ImageIO.createImageInputStream(raf);
ImageOutputStream ostream = ImageIO.createImageOutputStream(raf);
f.delete();
if (istream == null) {
throw new RuntimeException("ImageIO.createImageInputStream(RandomAccessFile) returned null!");
}
if (ostream == null) {
throw new RuntimeException("ImageIO.createImageOutputStream(RandomAccessFile) returned null!");
}
if (!(istream instanceof FileImageInputStream)) {
throw new RuntimeException("ImageIO.createImageInputStream(RandomAccessFile) did not return a FileImageInputStream!");
}
if (!(ostream instanceof FileImageOutputStream)) {
throw new RuntimeException("ImageIO.createImageOutputStream(RandomAccessFile) did not return a FileImageOutputStream!");
}
} catch (IOException ioe) {
throw new RuntimeException("Unexpected IOException: " + ioe);
}
}
public static void main(String args[]) throws IOException {
String inputPngPath = "test_pic/test.png";
String inputJpgPath = "test_pic/test.jpg";
String outputWebpPath = "test_pic/test_.webp";
// Obtain an image to encode from somewhere
BufferedImage image = ImageIO.read(new File(inputJpgPath));
// Obtain a WebP ImageWriter instance
ImageWriter writer = ImageIO.getImageWritersByMIMEType("image/webp").next();
// Configure encoding parameters
WebPWriteParam writeParam = new WebPWriteParam(writer.getLocale());
writeParam.setCompressionMode(WebPWriteParam.MODE_DEFAULT);
// Configure the output on the ImageWriter
writer.setOutput(new FileImageOutputStream(new File(outputWebpPath)));
// Encode
long st = System.currentTimeMillis();
writer.write(null, new IIOImage(image, null, null), writeParam);
System.out.println("cost: " + (System.currentTimeMillis() - st));
}
public static void main(String[] args) {
try {
File f = new File("ImageInputStreamFromRAF.tmp");
RandomAccessFile raf = new RandomAccessFile(f, "rw");
ImageInputStream istream = ImageIO.createImageInputStream(raf);
ImageOutputStream ostream = ImageIO.createImageOutputStream(raf);
f.delete();
if (istream == null) {
throw new RuntimeException("ImageIO.createImageInputStream(RandomAccessFile) returned null!");
}
if (ostream == null) {
throw new RuntimeException("ImageIO.createImageOutputStream(RandomAccessFile) returned null!");
}
if (!(istream instanceof FileImageInputStream)) {
throw new RuntimeException("ImageIO.createImageInputStream(RandomAccessFile) did not return a FileImageInputStream!");
}
if (!(ostream instanceof FileImageOutputStream)) {
throw new RuntimeException("ImageIO.createImageOutputStream(RandomAccessFile) did not return a FileImageOutputStream!");
}
} catch (IOException ioe) {
throw new RuntimeException("Unexpected IOException: " + ioe);
}
}
private void saveGraphicJpeg(BufferedImage chart, File outputFile, float quality)
throws IOException {
// Setup correct compression for jpeg.
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter) iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality);
// Output the image.
FileImageOutputStream output = new FileImageOutputStream(outputFile);
writer.setOutput(output);
IIOImage image = new IIOImage(chart, null, null);
writer.write(null, image, iwp);
writer.dispose();
}
private void saveGraphicJpeg(BufferedImage chart, File outputFile, float quality) throws IOException {
// Setup correct compression for jpeg.
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality);
// Output the image.
FileImageOutputStream output = new FileImageOutputStream(outputFile);
writer.setOutput(output);
IIOImage image = new IIOImage(chart, null, null);
writer.write(null, image, iwp);
writer.dispose();
}
private static void convertImages( final File file ) throws Exception {
if ( file.isDirectory() ) {
for ( final File childFile : file.listFiles() )
convertImages( childFile );
}
else {
final BufferedImage bi = ImageIO.read( file );
// Default quality is not sufficient!
// ImageIO.write( bi, "JPG", new File( file.getPath().replace( ".png", ".jpg" ) ) );
final ImageWriter iw = ImageIO.getImageWritersByFormatName( "jpg" ).next();
final ImageWriteParam iwp = iw.getDefaultWriteParam();
iwp.setCompressionMode( ImageWriteParam.MODE_EXPLICIT );
iwp.setCompressionQuality( 0.9f );
iw.setOutput( new FileImageOutputStream( new File( file.getPath().replace( ".png", ".jpg" ) ) ) );
iw.write( null, new IIOImage( bi , null, null ), iwp );
iw.dispose();
}
}
/**
* Can change this to choose a better compression level as the default
*
* @param image
* @param scaledImage
* @return
*/
private static boolean writeTo(BufferedImage image, File scaledImage, Size scaledSize, String outputFormat) {
try {
if (!StringHelper.containsNonWhitespace(outputFormat)) {
outputFormat = OUTPUT_FORMAT;
}
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(outputFormat);
if (writers.hasNext()) {
ImageWriter writer = writers.next();
ImageWriteParam iwp = getOptimizedImageWriteParam(writer, scaledSize);
IIOImage iiOImage = new IIOImage(image, null, null);
ImageOutputStream iOut = new FileImageOutputStream(scaledImage);
writer.setOutput(iOut);
writer.write(null, iiOImage, iwp);
writer.dispose();
iOut.flush();
iOut.close();
return true;
} else {
return ImageIO.write(image, outputFormat, scaledImage);
}
} catch (IOException e) {
return false;
}
}
/**
* Can change this to choose a better compression level as the default
*
* @param image
* @param scaledImage
* @return
*/
private static boolean writeTo(BufferedImage image, File scaledImage, Size scaledSize, String outputFormat) {
try {
if (!StringHelper.containsNonWhitespace(outputFormat)) {
outputFormat = OUTPUT_FORMAT;
}
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(outputFormat);
if (writers.hasNext()) {
ImageWriter writer = writers.next();
ImageWriteParam iwp = getOptimizedImageWriteParam(writer, scaledSize);
IIOImage iiOImage = new IIOImage(image, null, null);
ImageOutputStream iOut = new FileImageOutputStream(scaledImage);
writer.setOutput(iOut);
writer.write(null, iiOImage, iwp);
writer.dispose();
iOut.flush();
iOut.close();
return true;
} else {
return ImageIO.write(image, outputFormat, scaledImage);
}
} catch (IOException e) {
return false;
}
}
private void saveGraphicJpeg(BufferedImage chart, File outputFile, float quality) throws IOException {
// Setup correct compression for jpeg.
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality);
// Output the image.
FileImageOutputStream output = new FileImageOutputStream(outputFile);
writer.setOutput(output);
IIOImage image = new IIOImage(chart, null, null);
writer.write(null, image, iwp);
writer.dispose();
}
public static void makeGIFOld(Iterator<BufferedImage> images, float frameRate, File file, EventListener evl) throws IOException {
if (!images.hasNext()) {
return;
}
try (ImageOutputStream output = new FileImageOutputStream(file)) {
BufferedImage img0 = images.next();
GifSequenceWriter writer = new GifSequenceWriter(output, img0.getType(), (int) (1000.0 / frameRate), true);
writer.writeToSequence(img0);
while (images.hasNext()) {
writer.writeToSequence(images.next());
}
writer.close();
}
}
public static SeekableSource convertImageTo(SeekableSource source, String format) throws IOException, TaskIOException {
BufferedImage image = ImageIO.read(source.asNewInputStream());
File tmpFile = IOUtils.createTemporaryBuffer("." + format);
ImageOutputStream outputStream = new FileImageOutputStream(tmpFile);
try {
ImageWriter writer = ImageIO.getImageWritersByFormatName(format).next();
writer.setOutput(outputStream);
ImageWriteParam param = writer.getDefaultWriteParam();
if (format.equals("jpeg")) {
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(1.0F);
}
writer.write(null, new IIOImage(image, null, null), param);
} finally {
org.sejda.commons.util.IOUtils.closeQuietly(outputStream);
}
return SeekableSources.seekableSourceFrom(tmpFile);
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof File) {
try {
return new FileImageOutputStream((File)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException();
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof RandomAccessFile) {
try {
return new FileImageOutputStream((RandomAccessFile)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException
("input not a RandomAccessFile!");
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof File) {
try {
return new FileImageOutputStream((File)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException();
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof RandomAccessFile) {
try {
return new FileImageOutputStream((RandomAccessFile)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException
("input not a RandomAccessFile!");
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof File) {
try {
return new FileImageOutputStream((File)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException();
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof RandomAccessFile) {
try {
return new FileImageOutputStream((RandomAccessFile)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException
("input not a RandomAccessFile!");
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof File) {
try {
return new FileImageOutputStream((File)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException();
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof RandomAccessFile) {
try {
return new FileImageOutputStream((RandomAccessFile)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException
("input not a RandomAccessFile!");
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof File) {
try {
return new FileImageOutputStream((File)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException();
}
}
public ImageOutputStream createOutputStreamInstance(Object output,
boolean useCache,
File cacheDir) {
if (output instanceof RandomAccessFile) {
try {
return new FileImageOutputStream((RandomAccessFile)output);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
throw new IllegalArgumentException
("input not a RandomAccessFile!");
}
}
private void writeFullEnumParamChoiceToFile(File file, Selector selector, int value) throws IOException
{
final FileImageOutputStream stream = new FileImageOutputStream(file);
if (selector == Selector.BLACK)
stream.writeByte(value);
else if (selector == Selector.GREY)
stream.writeShort(value);
else if (selector == Selector.WHITE)
stream.writeInt(value);
else
fail("Invalid selector: " + selector);
stream.close();
}
private void writeBoolParamChoiceToFile(File file, boolean selector, int value) throws IOException
{
final FileImageOutputStream stream = new FileImageOutputStream(file);
if (selector)
stream.writeByte(value);
else
stream.writeShort(value);
stream.close();
}
private void writeEnumParamChoiceToFile(File file, Selector selector, int value) throws IOException
{
final FileImageOutputStream stream = new FileImageOutputStream(file);
if (selector == Selector.BLACK)
stream.writeByte(value);
else if (selector == Selector.GREY)
stream.writeShort(value);
else if (selector == Selector.WHITE)
stream.writeInt(value);
else
fail("Invalid selector: " + selector);
stream.close();
}