This commit is contained in:
Looly 2025-11-17 21:42:18 +08:00
parent f9fb33c3f1
commit db5f36028f
2 changed files with 14 additions and 10 deletions

View File

@ -1727,7 +1727,7 @@ public class ImgUtil {
* @since 3.1.0 * @since 3.1.0
*/ */
public static void write(final Image image, final File targetFile) throws IORuntimeException { public static void write(final Image image, final File targetFile) throws IORuntimeException {
ImgWriter.of(image, FileNameUtil.extName(targetFile)).write(targetFile); ImgWriter.of(image, FileNameUtil.extName(targetFile)).write(targetFile).flush();
} }
/** /**
@ -1773,7 +1773,8 @@ public class ImgUtil {
public static void write(final Image image, final String imageType, final ImageOutputStream output, final float quality) { public static void write(final Image image, final String imageType, final ImageOutputStream output, final float quality) {
ImgWriter.of(image, imageType) ImgWriter.of(image, imageType)
.setQuality(quality) .setQuality(quality)
.write(output); .write(output)
.flush();
} }
/** /**

View File

@ -16,9 +16,9 @@
package cn.hutool.v7.swing.img; package cn.hutool.v7.swing.img;
import cn.hutool.v7.core.io.file.FileUtil;
import cn.hutool.v7.core.io.IORuntimeException; import cn.hutool.v7.core.io.IORuntimeException;
import cn.hutool.v7.core.io.IoUtil; import cn.hutool.v7.core.io.IoUtil;
import cn.hutool.v7.core.io.file.FileUtil;
import cn.hutool.v7.core.lang.Assert; import cn.hutool.v7.core.lang.Assert;
import javax.imageio.IIOImage; import javax.imageio.IIOImage;
@ -28,7 +28,6 @@ import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream; import javax.imageio.stream.ImageOutputStream;
import java.awt.Color; import java.awt.Color;
import java.awt.Image; import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel; import java.awt.image.ColorModel;
import java.awt.image.RenderedImage; import java.awt.image.RenderedImage;
import java.io.File; import java.io.File;
@ -96,9 +95,11 @@ public class ImgWriter implements Flushable {
* *
* @param out 写出到的目标流 * @param out 写出到的目标流
* @throws IORuntimeException IO异常 * @throws IORuntimeException IO异常
* @return this
*/ */
public void write(final OutputStream out) throws IORuntimeException { public ImgWriter write(final OutputStream out) throws IORuntimeException {
write(ImgUtil.getImageOutputStream(out)); write(ImgUtil.getImageOutputStream(out));
return this;
} }
/** /**
@ -106,8 +107,9 @@ public class ImgWriter implements Flushable {
* *
* @param targetFile 目标文件 * @param targetFile 目标文件
* @throws IORuntimeException IO异常 * @throws IORuntimeException IO异常
* @return this
*/ */
public void write(final File targetFile) throws IORuntimeException { public ImgWriter write(final File targetFile) throws IORuntimeException {
FileUtil.touch(targetFile); FileUtil.touch(targetFile);
ImageOutputStream out = null; ImageOutputStream out = null;
try { try {
@ -116,14 +118,16 @@ public class ImgWriter implements Flushable {
} finally { } finally {
IoUtil.closeQuietly(out); IoUtil.closeQuietly(out);
} }
return this;
} }
/** /**
* 通过{@link ImageWriter}写出图片到输出流 * 通过{@link ImageWriter}写出图片到输出流
* *
* @param output 输出的Image流{@link ImageOutputStream} 非空 * @param output 输出的Image流{@link ImageOutputStream} 非空
* @return this
*/ */
public void write(final ImageOutputStream output) { public ImgWriter write(final ImageOutputStream output) {
Assert.notNull(output); Assert.notNull(output);
final ImageWriter writer = this.writer; final ImageWriter writer = this.writer;
@ -145,14 +149,13 @@ public class ImgWriter implements Flushable {
// FileCacheImageOutputStream会产生临时文件此处关闭清除 // FileCacheImageOutputStream会产生临时文件此处关闭清除
IoUtil.closeQuietly(output); IoUtil.closeQuietly(output);
} }
return this;
} }
@Override @Override
public void flush() { public void flush() {
final RenderedImage renderedImage = this.image; final RenderedImage renderedImage = this.image;
if(renderedImage instanceof BufferedImage){ if(renderedImage instanceof Image){
ImgUtil.flush((BufferedImage) renderedImage);
} else if(renderedImage instanceof Image){
ImgUtil.flush((Image) renderedImage); ImgUtil.flush((Image) renderedImage);
} }
} }