diff --git a/hutool-extra/src/main/java/org/dromara/hutool/extra/qrcode/QrImage.java b/hutool-extra/src/main/java/org/dromara/hutool/extra/qrcode/QrImage.java index 356cdf3b3..769e9cc0c 100644 --- a/hutool-extra/src/main/java/org/dromara/hutool/extra/qrcode/QrImage.java +++ b/hutool-extra/src/main/java/org/dromara/hutool/extra/qrcode/QrImage.java @@ -86,6 +86,7 @@ public class QrImage extends BufferedImage { imgWidth = logoImg.getWidth(null) * imgHeight / logoImg.getHeight(null); } + // 原图片上直接绘制水印 Img.from(this).pressImage(// Img.from(logoImg).round(config.imgRound).getImg(), // 圆角 new Rectangle(imgWidth, imgHeight), // 位置 diff --git a/hutool-swing/src/main/java/org/dromara/hutool/swing/img/Img.java b/hutool-swing/src/main/java/org/dromara/hutool/swing/img/Img.java index 1d35fb811..afa5544ce 100644 --- a/hutool-swing/src/main/java/org/dromara/hutool/swing/img/Img.java +++ b/hutool-swing/src/main/java/org/dromara/hutool/swing/img/Img.java @@ -586,7 +586,8 @@ public class Img implements Flushable, Serializable { } /** - * 给图片添加图片水印 + * 给图片添加图片水印
+ * 如果源图片对象为 {@link BufferedImage},则绘制在源图片上,否则创建新的图片 * * @param pressImg 水印图片,可以使用{@link ImageIO#read(File)}方法读取文件 * @param rectangle 矩形对象,表示矩形区域的x,y,width,height,x,y从背景图片中心计算 diff --git a/hutool-swing/src/main/java/org/dromara/hutool/swing/img/ImgUtil.java b/hutool-swing/src/main/java/org/dromara/hutool/swing/img/ImgUtil.java index 1aebce731..7461015b1 100644 --- a/hutool-swing/src/main/java/org/dromara/hutool/swing/img/ImgUtil.java +++ b/hutool-swing/src/main/java/org/dromara/hutool/swing/img/ImgUtil.java @@ -52,29 +52,29 @@ public class ImgUtil { // region ----- [const] image type /** - * GIF + * 图形交换格式:GIF */ - public static final String IMAGE_TYPE_GIF = "gif";// 图形交换格式 + public static final String IMAGE_TYPE_GIF = "gif"; /** - * JPG + * 联合照片专家组:JPG */ - public static final String IMAGE_TYPE_JPG = "jpg";// 联合照片专家组 + public static final String IMAGE_TYPE_JPG = "jpg"; /** - * JPEG + * 联合照片专家组:JPEG */ - public static final String IMAGE_TYPE_JPEG = "jpeg";// 联合照片专家组 + public static final String IMAGE_TYPE_JPEG = "jpeg"; /** - * BMP + * 英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式:BMP */ - public static final String IMAGE_TYPE_BMP = "bmp";// 英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式 + public static final String IMAGE_TYPE_BMP = "bmp"; /** - * PNG + * 可移植网络图形:PNG */ - public static final String IMAGE_TYPE_PNG = "png";// 可移植网络图形 + public static final String IMAGE_TYPE_PNG = "png"; /** - * PSD + * Photoshop的专用格式:PSD */ - public static final String IMAGE_TYPE_PSD = "psd";// Photoshop的专用格式Photoshop + public static final String IMAGE_TYPE_PSD = "psd"; // endregion // region ----- scale @@ -100,16 +100,16 @@ public class ImgUtil { * 缩放图像(按比例缩放)
* 缩放后默认为jpeg格式,此方法并不关闭流 * - * @param srcStream 源图像来源流 - * @param destStream 缩放后的图像写出到的流 - * @param scale 缩放比例。比例大于1时为放大,小于1大于0为缩小 + * @param srcStream 源图像来源流 + * @param targetStream 缩放后的图像写出到的流 + * @param scale 缩放比例。比例大于1时为放大,小于1大于0为缩小 * @since 3.0.9 */ - public static void scale(final InputStream srcStream, final OutputStream destStream, final float scale) { + public static void scale(final InputStream srcStream, final OutputStream targetStream, final float scale) { BufferedImage image = null; try { image = read(srcStream); - scale(image, destStream, scale); + scale(image, targetStream, scale); } finally { flush(image); } @@ -229,15 +229,21 @@ public class ImgUtil { * 缩放图像(按高度和宽度缩放)
* 缩放后默认为jpeg格式,此方法并不关闭流 * - * @param srcStream 源图像流 - * @param destStream 缩放后的图像目标流 - * @param width 缩放后的宽度 - * @param height 缩放后的高度 - * @param fixedColor 比例不对时补充的颜色,不补充为{@code null} + * @param srcStream 源图像流 + * @param targetStream 缩放后的图像目标流 + * @param width 缩放后的宽度 + * @param height 缩放后的高度 + * @param fixedColor 比例不对时补充的颜色,不补充为{@code null} * @throws IORuntimeException IO异常 */ - public static void scale(final InputStream srcStream, final OutputStream destStream, final int width, final int height, final Color fixedColor) throws IORuntimeException { - scale(read(srcStream), getImageOutputStream(destStream), width, height, fixedColor); + public static void scale(final InputStream srcStream, final OutputStream targetStream, final int width, final int height, final Color fixedColor) throws IORuntimeException { + BufferedImage image = null; + try { + image = read(srcStream); + scale(image, getImageOutputStream(targetStream), width, height, fixedColor); + } finally { + flush(image); + } } /** @@ -265,22 +271,22 @@ public class ImgUtil { * 缩放图像(按高度和宽度缩放)
* 缩放后默认为jpeg格式,此方法并不关闭流 * - * @param srcImage 源图像 - * @param destImageStream 缩放后的图像目标流 - * @param width 缩放后的宽度 - * @param height 缩放后的高度 - * @param fixedColor 比例不对时补充的颜色,不补充为{@code null} + * @param srcImage 源图像,使用结束后需手动调用{@link #flush(Image)}释放资源 + * @param targetImageStream 缩放后的图像目标流 + * @param width 缩放后的宽度 + * @param height 缩放后的高度 + * @param fixedColor 比例不对时补充的颜色,不补充为{@code null} * @throws IORuntimeException IO异常 */ - public static void scale(final Image srcImage, final ImageOutputStream destImageStream, final int width, final int height, final Color fixedColor) throws IORuntimeException { - writeJpg(scale(srcImage, width, height, fixedColor), destImageStream); + public static void scale(final Image srcImage, final ImageOutputStream targetImageStream, final int width, final int height, final Color fixedColor) throws IORuntimeException { + writeJpg(scale(srcImage, width, height, fixedColor), targetImageStream); } /** * 缩放图像(按高度和宽度缩放)
* 缩放后默认为jpeg格式 * - * @param srcImage 源图像 + * @param srcImage 源图像,使用结束后需手动调用{@link #flush(Image)}释放资源 * @param width 缩放后的宽度 * @param height 缩放后的高度 * @param fixedColor 比例不对时补充的颜色,不补充为{@code null} @@ -297,15 +303,15 @@ public class ImgUtil { * 图像切割(按指定起点坐标和宽高切割) * * @param srcImgFile 源图像文件 - * @param destImgFile 切片后的图像文件 + * @param targetImgFile 切片后的图像文件 * @param rectangle 矩形对象,表示矩形区域的x,y,width,height * @since 3.1.0 */ - public static void cut(final File srcImgFile, final File destImgFile, final Rectangle rectangle) { + public static void cut(final File srcImgFile, final File targetImgFile, final Rectangle rectangle) { BufferedImage image = null; try { image = read(srcImgFile); - cut(image, destImgFile, rectangle); + cut(image, targetImgFile, rectangle); } finally { flush(image); } @@ -742,15 +748,15 @@ public class ImgUtil { * 此方法并不关闭流 * * @param srcStream 源图像流 - * @param destStream 目标图像流 + * @param targetStream 目标图像流 * @param imageType 图片格式(扩展名) * @since 4.0.5 */ - public static void binary(final InputStream srcStream, final OutputStream destStream, final String imageType) { + public static void binary(final InputStream srcStream, final OutputStream targetStream, final String imageType) { BufferedImage image = null; try { image = read(srcStream); - binary(image, getImageOutputStream(destStream), imageType); + binary(image, getImageOutputStream(targetStream), imageType); } finally { flush(image); } @@ -778,7 +784,7 @@ public class ImgUtil { /** * 彩色转为黑白二值化图片,根据目标文件扩展名确定转换后的格式 * - * @param srcImage 源图像流,使用结束后需手动调用{@link #flush(Image)}释放资源 + * @param srcImage 源图像,使用结束后需手动调用{@link #flush(Image)}释放资源 * @param outFile 目标文件 * @since 4.0.5 */ @@ -790,7 +796,7 @@ public class ImgUtil { * 彩色转为黑白二值化图片
* 此方法并不关闭流,输出JPG格式 * - * @param srcImage 源图像流,使用结束后需手动调用{@link #flush(Image)}释放资源 + * @param srcImage 源图像,使用结束后需手动调用{@link #flush(Image)}释放资源 * @param out 目标图像流 * @param imageType 图片格式(扩展名) * @since 4.0.5 @@ -803,7 +809,7 @@ public class ImgUtil { * 彩色转为黑白二值化图片
* 此方法并不关闭流,输出JPG格式 * - * @param srcImage 源图像流,使用结束后需手动调用{@link #flush(Image)}释放资源 + * @param srcImage 源图像,使用结束后需手动调用{@link #flush(Image)}释放资源 * @param targetImageStream 目标图像流 * @param imageType 图片格式(扩展名) * @throws IORuntimeException IO异常 @@ -816,7 +822,7 @@ public class ImgUtil { /** * 彩色转为黑白二值化图片 * - * @param srcImage 源图像流,使用结束后需手动调用{@link #flush(Image)}释放资源 + * @param srcImage 源图像,使用结束后需手动调用{@link #flush(Image)}释放资源 * @return {@link Image}二值化后的图片 * @since 4.0.5 */