mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
eaed0bb932
commit
436b9199ef
@ -34,7 +34,7 @@ public class DesktopUtil {
|
|||||||
*
|
*
|
||||||
* @return {@link Desktop}
|
* @return {@link Desktop}
|
||||||
*/
|
*/
|
||||||
public static Desktop getDsktop() {
|
public static Desktop getDesktop() {
|
||||||
return Desktop.getDesktop();
|
return Desktop.getDesktop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,9 +54,9 @@ public class DesktopUtil {
|
|||||||
* @since 4.6.3
|
* @since 4.6.3
|
||||||
*/
|
*/
|
||||||
public static void browse(final URI uri) {
|
public static void browse(final URI uri) {
|
||||||
final Desktop dsktop = getDsktop();
|
final Desktop desktop = getDesktop();
|
||||||
try {
|
try {
|
||||||
dsktop.browse(uri);
|
desktop.browse(uri);
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
throw new IORuntimeException(e);
|
throw new IORuntimeException(e);
|
||||||
}
|
}
|
||||||
@ -68,9 +68,9 @@ public class DesktopUtil {
|
|||||||
* @param file URL地址
|
* @param file URL地址
|
||||||
*/
|
*/
|
||||||
public static void open(final File file) {
|
public static void open(final File file) {
|
||||||
final Desktop dsktop = getDsktop();
|
final Desktop desktop = getDesktop();
|
||||||
try {
|
try {
|
||||||
dsktop.open(file);
|
desktop.open(file);
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
throw new IORuntimeException(e);
|
throw new IORuntimeException(e);
|
||||||
}
|
}
|
||||||
@ -82,9 +82,9 @@ public class DesktopUtil {
|
|||||||
* @param file 文件
|
* @param file 文件
|
||||||
*/
|
*/
|
||||||
public static void edit(final File file) {
|
public static void edit(final File file) {
|
||||||
final Desktop dsktop = getDsktop();
|
final Desktop desktop = getDesktop();
|
||||||
try {
|
try {
|
||||||
dsktop.edit(file);
|
desktop.edit(file);
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
throw new IORuntimeException(e);
|
throw new IORuntimeException(e);
|
||||||
}
|
}
|
||||||
@ -96,9 +96,9 @@ public class DesktopUtil {
|
|||||||
* @param file 文件
|
* @param file 文件
|
||||||
*/
|
*/
|
||||||
public static void print(final File file) {
|
public static void print(final File file) {
|
||||||
final Desktop dsktop = getDsktop();
|
final Desktop desktop = getDesktop();
|
||||||
try {
|
try {
|
||||||
dsktop.print(file);
|
desktop.print(file);
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
throw new IORuntimeException(e);
|
throw new IORuntimeException(e);
|
||||||
}
|
}
|
||||||
@ -110,9 +110,9 @@ public class DesktopUtil {
|
|||||||
* @param mailAddress 邮件地址
|
* @param mailAddress 邮件地址
|
||||||
*/
|
*/
|
||||||
public static void mail(final String mailAddress) {
|
public static void mail(final String mailAddress) {
|
||||||
final Desktop dsktop = getDsktop();
|
final Desktop desktop = getDesktop();
|
||||||
try {
|
try {
|
||||||
dsktop.mail(UrlUtil.toURI(mailAddress));
|
desktop.mail(UrlUtil.toURI(mailAddress));
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
throw new IORuntimeException(e);
|
throw new IORuntimeException(e);
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,13 @@ public class RobotUtil {
|
|||||||
* @return 写出到的文件
|
* @return 写出到的文件
|
||||||
*/
|
*/
|
||||||
public static File captureScreen(final File outFile) {
|
public static File captureScreen(final File outFile) {
|
||||||
ImgUtil.write(captureScreen(), outFile);
|
BufferedImage image = null;
|
||||||
|
try{
|
||||||
|
image = captureScreen();
|
||||||
|
ImgUtil.write(image, outFile);
|
||||||
|
} finally {
|
||||||
|
ImgUtil.flush(image);
|
||||||
|
}
|
||||||
return outFile;
|
return outFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,15 @@ public abstract class AbstractCaptcha implements ICaptcha {
|
|||||||
generateCode();
|
generateCode();
|
||||||
|
|
||||||
final ByteArrayOutputStream out = new ByteArrayOutputStream();
|
final ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
ImgUtil.writePng(createImage(this.code), out);
|
|
||||||
|
Image image = null;
|
||||||
|
try{
|
||||||
|
image = createImage(this.code);
|
||||||
|
ImgUtil.writePng(image, out);
|
||||||
|
} finally {
|
||||||
|
ImgUtil.flush(image);
|
||||||
|
}
|
||||||
|
|
||||||
this.imageBytes = out.toByteArray();
|
this.imageBytes = out.toByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,7 +197,8 @@ public abstract class AbstractCaptcha implements ICaptcha {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取验证码图
|
* 获取验证码图<br>
|
||||||
|
* 注意返回的{@link BufferedImage}使用完毕后需要调用{@link BufferedImage#flush()}释放资源
|
||||||
*
|
*
|
||||||
* @return 验证码图
|
* @return 验证码图
|
||||||
*/
|
*/
|
||||||
|
@ -12,9 +12,10 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.swing.img;
|
package org.dromara.hutool.swing.img;
|
||||||
|
|
||||||
|
import org.dromara.hutool.core.array.ArrayUtil;
|
||||||
import org.dromara.hutool.core.io.IORuntimeException;
|
import org.dromara.hutool.core.io.IORuntimeException;
|
||||||
import org.dromara.hutool.core.io.file.FileTypeUtil;
|
import org.dromara.hutool.core.io.file.FileTypeUtil;
|
||||||
import org.dromara.hutool.core.array.ArrayUtil;
|
import org.dromara.hutool.core.lang.Assert;
|
||||||
import org.dromara.hutool.core.text.StrUtil;
|
import org.dromara.hutool.core.text.StrUtil;
|
||||||
import org.dromara.hutool.swing.img.color.ColorUtil;
|
import org.dromara.hutool.swing.img.color.ColorUtil;
|
||||||
|
|
||||||
@ -33,9 +34,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>图片背景识别处理、背景替换、背景设置为矢量图</p>
|
* 图片背景识别处理、背景替换、背景设置为矢量图,根据一定规则算出图片背景色的RGB值,进行替换
|
||||||
* <p>根据一定规则算出图片背景色的RGB值,进行替换</p>
|
|
||||||
* <p>2020-05-21 16:36</p>
|
|
||||||
*
|
*
|
||||||
* @author Dai Yuanchuan
|
* @author Dai Yuanchuan
|
||||||
**/
|
**/
|
||||||
@ -45,7 +44,7 @@ public class BackgroundRemoval {
|
|||||||
* 目前暂时支持的图片类型数组
|
* 目前暂时支持的图片类型数组
|
||||||
* 其他格式的不保证结果
|
* 其他格式的不保证结果
|
||||||
*/
|
*/
|
||||||
public static String[] IMAGES_TYPE = {"jpg", "png"};
|
public static String[] IMAGES_TYPE = {ImgUtil.IMAGE_TYPE_JPG, ImgUtil.IMAGE_TYPE_JPEG, ImgUtil.IMAGE_TYPE_PNG};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 背景移除
|
* 背景移除
|
||||||
@ -59,10 +58,9 @@ public class BackgroundRemoval {
|
|||||||
* @param inputPath 要处理图片的路径
|
* @param inputPath 要处理图片的路径
|
||||||
* @param outputPath 输出图片的路径
|
* @param outputPath 输出图片的路径
|
||||||
* @param tolerance 容差值[根据图片的主题色,加入容差值,值的范围在0~255之间]
|
* @param tolerance 容差值[根据图片的主题色,加入容差值,值的范围在0~255之间]
|
||||||
* @return 返回处理结果 true:图片处理完成 false:图片处理失败
|
|
||||||
*/
|
*/
|
||||||
public static boolean backgroundRemoval(final String inputPath, final String outputPath, final int tolerance) {
|
public static void backgroundRemoval(final String inputPath, final String outputPath, final int tolerance) {
|
||||||
return backgroundRemoval(new File(inputPath), new File(outputPath), tolerance);
|
backgroundRemoval(new File(inputPath), new File(outputPath), tolerance);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -77,10 +75,9 @@ public class BackgroundRemoval {
|
|||||||
* @param input 需要进行操作的图片
|
* @param input 需要进行操作的图片
|
||||||
* @param output 最后输出的文件
|
* @param output 最后输出的文件
|
||||||
* @param tolerance 容差值[根据图片的主题色,加入容差值,值的取值范围在0~255之间]
|
* @param tolerance 容差值[根据图片的主题色,加入容差值,值的取值范围在0~255之间]
|
||||||
* @return 返回处理结果 true:图片处理完成 false:图片处理失败
|
|
||||||
*/
|
*/
|
||||||
public static boolean backgroundRemoval(final File input, final File output, final int tolerance) {
|
public static void backgroundRemoval(final File input, final File output, final int tolerance) {
|
||||||
return backgroundRemoval(input, output, null, tolerance);
|
backgroundRemoval(input, output, null, tolerance);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -93,22 +90,20 @@ public class BackgroundRemoval {
|
|||||||
* 发现相同则将颜色不透明度设置为0,使颜色完全透明.
|
* 发现相同则将颜色不透明度设置为0,使颜色完全透明.
|
||||||
*
|
*
|
||||||
* @param input 需要进行操作的图片
|
* @param input 需要进行操作的图片
|
||||||
* @param output 最后输出的文件
|
* @param output 最后输出的文件,必须为.png
|
||||||
* @param override 指定替换成的背景颜色 为null时背景为透明
|
* @param override 指定替换成的背景颜色 为null时背景为透明
|
||||||
* @param tolerance 容差值[根据图片的主题色,加入容差值,值的取值范围在0~255之间]
|
* @param tolerance 容差值[根据图片的主题色,加入容差值,值的取值范围在0~255之间]
|
||||||
* @return 返回处理结果 true:图片处理完成 false:图片处理失败
|
|
||||||
*/
|
*/
|
||||||
public static boolean backgroundRemoval(final File input, final File output, final Color override, final int tolerance) {
|
public static void backgroundRemoval(final File input, final File output, final Color override, final int tolerance) {
|
||||||
if (fileTypeValidation(input, IMAGES_TYPE)) {
|
fileTypeValidation(input, IMAGES_TYPE);
|
||||||
return false;
|
BufferedImage bufferedImage = null;
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
// 获取图片左上、中上、右上、右中、右下、下中、左下、左中、8个像素点rgb的16进制值
|
// 获取图片左上、中上、右上、右中、右下、下中、左下、左中、8个像素点rgb的16进制值
|
||||||
final BufferedImage bufferedImage = ImageIO.read(input);
|
bufferedImage = ImgUtil.read(input);
|
||||||
// 图片输出的格式为 png
|
// 图片输出的格式为 png
|
||||||
return ImageIO.write(backgroundRemoval(bufferedImage, override, tolerance), "png", output);
|
ImgUtil.write(backgroundRemoval(bufferedImage, override, tolerance), output);
|
||||||
} catch (final IOException e) {
|
} finally {
|
||||||
throw new IORuntimeException(e);
|
ImgUtil.flush(bufferedImage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +127,7 @@ public class BackgroundRemoval {
|
|||||||
// 绘制icon
|
// 绘制icon
|
||||||
final ImageIcon imageIcon = new ImageIcon(bufferedImage);
|
final ImageIcon imageIcon = new ImageIcon(bufferedImage);
|
||||||
final BufferedImage image = new BufferedImage(imageIcon.getIconWidth(), imageIcon.getIconHeight(),
|
final BufferedImage image = new BufferedImage(imageIcon.getIconWidth(), imageIcon.getIconHeight(),
|
||||||
BufferedImage.TYPE_4BYTE_ABGR);
|
BufferedImage.TYPE_4BYTE_ABGR);
|
||||||
// 绘图工具
|
// 绘图工具
|
||||||
final Graphics graphics = image.getGraphics();
|
final Graphics graphics = image.getGraphics();
|
||||||
graphics.drawImage(imageIcon.getImage(), 0, 0, imageIcon.getImageObserver());
|
graphics.drawImage(imageIcon.getImage(), 0, 0, imageIcon.getImageObserver());
|
||||||
@ -147,7 +142,7 @@ public class BackgroundRemoval {
|
|||||||
int rgb = image.getRGB(x, y);
|
int rgb = image.getRGB(x, y);
|
||||||
final String hex = ColorUtil.toHex((rgb & 0xff0000) >> 16, (rgb & 0xff00) >> 8, (rgb & 0xff));
|
final String hex = ColorUtil.toHex((rgb & 0xff0000) >> 16, (rgb & 0xff00) >> 8, (rgb & 0xff));
|
||||||
final boolean isTrue = ArrayUtil.contains(removeRgb, hex) ||
|
final boolean isTrue = ArrayUtil.contains(removeRgb, hex) ||
|
||||||
areColorsWithinTolerance(hexToRgb(mainColor), new Color(Integer.parseInt(hex.substring(1), 16)), tolerance);
|
areColorsWithinTolerance(hexToRgb(mainColor), new Color(Integer.parseInt(hex.substring(1), 16)), tolerance);
|
||||||
if (isTrue) {
|
if (isTrue) {
|
||||||
rgb = override == null ? ((alpha + 1) << 24) | (rgb & 0x00ffffff) : override.getRGB();
|
rgb = override == null ? ((alpha + 1) << 24) | (rgb & 0x00ffffff) : override.getRGB();
|
||||||
}
|
}
|
||||||
@ -254,13 +249,13 @@ public class BackgroundRemoval {
|
|||||||
*/
|
*/
|
||||||
public static boolean areColorsWithinTolerance(final Color color1, final Color color2, final Color tolerance) {
|
public static boolean areColorsWithinTolerance(final Color color1, final Color color2, final Color tolerance) {
|
||||||
return (color1.getRed() - color2.getRed() < tolerance.getRed() && color1
|
return (color1.getRed() - color2.getRed() < tolerance.getRed() && color1
|
||||||
.getRed() - color2.getRed() > -tolerance.getRed())
|
.getRed() - color2.getRed() > -tolerance.getRed())
|
||||||
&& (color1.getBlue() - color2.getBlue() < tolerance
|
&& (color1.getBlue() - color2.getBlue() < tolerance
|
||||||
.getBlue() && color1.getBlue() - color2.getBlue() > -tolerance
|
.getBlue() && color1.getBlue() - color2.getBlue() > -tolerance
|
||||||
.getBlue())
|
.getBlue())
|
||||||
&& (color1.getGreen() - color2.getGreen() < tolerance
|
&& (color1.getGreen() - color2.getGreen() < tolerance
|
||||||
.getGreen() && color1.getGreen()
|
.getGreen() && color1.getGreen()
|
||||||
- color2.getGreen() > -tolerance.getGreen());
|
- color2.getGreen() > -tolerance.getGreen());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -335,7 +330,7 @@ public class BackgroundRemoval {
|
|||||||
final int rgbLength = 3;
|
final int rgbLength = 3;
|
||||||
if (strings.length == rgbLength) {
|
if (strings.length == rgbLength) {
|
||||||
return ColorUtil.toHex(Integer.parseInt(strings[0]), Integer.parseInt(strings[1]),
|
return ColorUtil.toHex(Integer.parseInt(strings[0]), Integer.parseInt(strings[1]),
|
||||||
Integer.parseInt(strings[2]));
|
Integer.parseInt(strings[2]));
|
||||||
}
|
}
|
||||||
return StrUtil.EMPTY;
|
return StrUtil.EMPTY;
|
||||||
}
|
}
|
||||||
@ -348,18 +343,14 @@ public class BackgroundRemoval {
|
|||||||
*
|
*
|
||||||
* @param input 需要进行验证的文件
|
* @param input 需要进行验证的文件
|
||||||
* @param imagesType 文件包含的类型数组
|
* @param imagesType 文件包含的类型数组
|
||||||
* @return 返回布尔值 false:给定文件的文件类型在文件数组中 true:给定文件的文件类型 不在给定数组中。
|
|
||||||
*/
|
*/
|
||||||
private static boolean fileTypeValidation(final File input, final String[] imagesType) {
|
private static void fileTypeValidation(final File input, final String[] imagesType) {
|
||||||
if (!input.exists()) {
|
Assert.isTrue(input.exists(), "File {} not exist!", input);
|
||||||
throw new IllegalArgumentException("给定文件为空");
|
|
||||||
}
|
|
||||||
// 获取图片类型
|
// 获取图片类型
|
||||||
final String type = FileTypeUtil.getType(input);
|
final String type = FileTypeUtil.getType(input);
|
||||||
// 类型对比
|
// 类型对比
|
||||||
if (!ArrayUtil.contains(imagesType, type)) {
|
if (!ArrayUtil.contains(imagesType, type)) {
|
||||||
throw new IllegalArgumentException(StrUtil.format("文件类型{}不支持", type));
|
throw new IllegalArgumentException(StrUtil.format("Format {} of File not supported!", type));
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,9 @@ import java.awt.Dimension;
|
|||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontFormatException;
|
import java.awt.FontFormatException;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
|
import java.awt.font.FontRenderContext;
|
||||||
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -119,4 +122,19 @@ public class FontUtil {
|
|||||||
return new Dimension(width, height);
|
return new Dimension(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取font的样式应用在str上的整个矩形
|
||||||
|
*
|
||||||
|
* @param str 字符串,必须非空
|
||||||
|
* @param font 字体,必须非空
|
||||||
|
* @return {@link Rectangle2D}
|
||||||
|
* @since 5.3.3
|
||||||
|
*/
|
||||||
|
public static Rectangle2D getRectangle(final String str, final Font font) {
|
||||||
|
return font.getStringBounds(str,
|
||||||
|
new FontRenderContext(AffineTransform.getScaleInstance(1, 1),
|
||||||
|
false,
|
||||||
|
false));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -185,8 +185,8 @@ public class GraphicsUtil {
|
|||||||
* @return 画笔对象
|
* @return 画笔对象
|
||||||
*/
|
*/
|
||||||
public static Graphics drawImg(final Graphics g, final Image img, final Point point) {
|
public static Graphics drawImg(final Graphics g, final Image img, final Point point) {
|
||||||
return drawImg(g, img,
|
g.drawImage(img, point.x, point.y, null);
|
||||||
new Rectangle(point.x, point.y, img.getWidth(null), img.getHeight(null)));
|
return g;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -758,10 +758,13 @@ public class Img implements Flushable, Serializable {
|
|||||||
* 结果类型设定见{@link #setTargetImageType(String)}
|
* 结果类型设定见{@link #setTargetImageType(String)}
|
||||||
*
|
*
|
||||||
* @param out 写出到的目标流
|
* @param out 写出到的目标流
|
||||||
|
* @return this
|
||||||
* @throws IORuntimeException IO异常
|
* @throws IORuntimeException IO异常
|
||||||
*/
|
*/
|
||||||
public void write(final OutputStream out) throws IORuntimeException {
|
public Img write(final OutputStream out) throws IORuntimeException {
|
||||||
write(ImgUtil.getImageOutputStream(out));
|
write(ImgUtil.getImageOutputStream(out));
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -769,9 +772,10 @@ public class Img implements Flushable, Serializable {
|
|||||||
* 结果类型设定见{@link #setTargetImageType(String)}
|
* 结果类型设定见{@link #setTargetImageType(String)}
|
||||||
*
|
*
|
||||||
* @param targetImageStream 写出到的目标流
|
* @param targetImageStream 写出到的目标流
|
||||||
|
* @return this
|
||||||
* @throws IORuntimeException IO异常
|
* @throws IORuntimeException IO异常
|
||||||
*/
|
*/
|
||||||
public void write(final ImageOutputStream targetImageStream) throws IORuntimeException {
|
public Img write(final ImageOutputStream targetImageStream) throws IORuntimeException {
|
||||||
Assert.notBlank(this.targetImageType, "Target image type is blank !");
|
Assert.notBlank(this.targetImageType, "Target image type is blank !");
|
||||||
Assert.notNull(targetImageStream, "Target output stream is null !");
|
Assert.notNull(targetImageStream, "Target output stream is null !");
|
||||||
|
|
||||||
@ -779,6 +783,8 @@ public class Img implements Flushable, Serializable {
|
|||||||
Assert.notNull(targetImage, "Target image is null !");
|
Assert.notNull(targetImage, "Target image is null !");
|
||||||
|
|
||||||
ImgUtil.write(targetImage, this.targetImageType, targetImageStream, this.quality, this.backgroundColor);
|
ImgUtil.write(targetImage, this.targetImageType, targetImageStream, this.quality, this.backgroundColor);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -786,8 +792,9 @@ public class Img implements Flushable, Serializable {
|
|||||||
*
|
*
|
||||||
* @param targetFile 目标文件
|
* @param targetFile 目标文件
|
||||||
* @throws IORuntimeException IO异常
|
* @throws IORuntimeException IO异常
|
||||||
|
* @return this
|
||||||
*/
|
*/
|
||||||
public void write(final File targetFile) throws IORuntimeException {
|
public Img write(final File targetFile) throws IORuntimeException {
|
||||||
final String formatName = FileNameUtil.extName(targetFile);
|
final String formatName = FileNameUtil.extName(targetFile);
|
||||||
if (StrUtil.isNotBlank(formatName)) {
|
if (StrUtil.isNotBlank(formatName)) {
|
||||||
this.targetImageType = formatName;
|
this.targetImageType = formatName;
|
||||||
@ -805,6 +812,7 @@ public class Img implements Flushable, Serializable {
|
|||||||
} finally {
|
} finally {
|
||||||
IoUtil.closeQuietly(out);
|
IoUtil.closeQuietly(out);
|
||||||
}
|
}
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -24,16 +24,18 @@ 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;
|
||||||
|
import java.io.Flushable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 图片写出封装
|
* 图片写出封装
|
||||||
*/
|
*/
|
||||||
public class ImgWriter {
|
public class ImgWriter implements Flushable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建图片写出器
|
* 创建图片写出器
|
||||||
@ -138,6 +140,16 @@ public class ImgWriter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void flush() {
|
||||||
|
final RenderedImage renderedImage = this.image;
|
||||||
|
if(renderedImage instanceof BufferedImage){
|
||||||
|
ImgUtil.flush((BufferedImage) renderedImage);
|
||||||
|
} else if(renderedImage instanceof Image){
|
||||||
|
ImgUtil.flush((Image) renderedImage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建图片写出参数
|
* 构建图片写出参数
|
||||||
*
|
*
|
||||||
|
@ -107,6 +107,7 @@ public class ImgTest {
|
|||||||
|
|
||||||
final Image img = ImgUtil.getImage(UrlUtil.getURL(file));
|
final Image img = ImgUtil.getImage(UrlUtil.getURL(file));
|
||||||
ImgUtil.scale(img, fileScale, 0.8f);
|
ImgUtil.scale(img, fileScale, 0.8f);
|
||||||
|
ImgUtil.flush(img);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
x
Reference in New Issue
Block a user