Merge remote-tracking branch 'upstream/v7-dev' into perf/optimize-str-finder

This commit is contained in:
LettuceLeaves 2025-11-19 01:08:30 +08:00
commit 7578350baa
3 changed files with 15 additions and 11 deletions

View File

@ -197,7 +197,7 @@ Hutool欢迎任何人为Hutool添砖加瓦贡献代码不过维护者是
1. 注释完备尤其每个新增的方法应按照Java文档规范标明方法说明、参数说明、返回值说明等信息必要时请添加单元测试如果愿意也可以加上你的大名。
2. Hutool的缩进按照Eclipse~~不要跟我说IDEA多好用维护者非常懒学不会~~IDEA真香改了Eclipse快捷键后舒服多了默认tab缩进所以请遵守不要和我争执空格与tab的问题这是一个病人的习惯
3. 新加的方法不要使用第三方库的方法Hutool遵循无依赖原则除非在extra模块中加方法工具
4. 请pull request到`v6-dev`分支。Hutool在6.x版本后使用了新的分支`v6-master`是主分支表示已经发布中央库的版本这个分支不允许pr也不允许修改。
4. 请pull request到`v7-dev`分支。Hutool在7.x版本后使用了新的分支`v7-master`是主分支表示已经发布中央库的版本这个分支不允许pr也不允许修改。
### 💞沟通说明

View File

@ -1727,7 +1727,7 @@ public class ImgUtil {
* @since 3.1.0
*/
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) {
ImgWriter.of(image, imageType)
.setQuality(quality)
.write(output);
.write(output)
.flush();
}
/**

View File

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