Thumbnails 图片处理
Thumbnails 是由谷歌提供的图片处理包,目前版本0.4.8。
可以简洁的实现图片的缩放、压缩、旋转、水印、格式转换等操作。
示例代码:
package test;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Coordinate;
import net.coobird.thumbnailator.geometry.Positions;
import org.junit.Test;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
public class TestImageUtils {
@Test
public void testThumbnails() throws IOException {
String baseUrl = "imgurl";
String QRCodeUrl = "watermark url";
// 读入图片,输入可以是Url/InputStream/File/BufferedImage
BufferedImage qrCode = Thumbnails.of(new URL(QRCodeUrl)).size(220, 220).asBufferedImage();
Thumbnails.of(new URL(baseUrl))
.size(1080, 1372)
.watermark(new Coordinate(807, 1115), qrCode, 1.0f) //确定水印的起始位置和透明度
.watermark(Positions.BOTTOM_RIGHT, qrCode, 0.5f) //另一种确认水印位置的方式
.toFile("E:/thumbnails.jpg"); //可以输出文件或OutputStream
}
}
Thumbnails 不能添加文字,要添加文字的话需要自己另行处理。
示例代码:
package outfox.weixinactivity.weixin.utils; import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.geometry.Coordinate;import org.junit.Test; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.net.URL; public class TestImage { @Test public void testImageText() throws IOException {
// 载入图片、加水印 String baseUrl = "imgurl"; String QRCodeUrl = "watermark url"; ByteArrayOutputStream out = new ByteArrayOutputStream(); BufferedImage qrCode = Thumbnails.of(new URL(QRCodeUrl)).size(220, 220).asBufferedImage(); Thumbnails.of(new URL(baseUrl)) .size(1080, 1372) .watermark(new Coordinate(807, 1115), qrCode, 1.0f) .toOutputStream(out); BufferedImage image = ImageIO.read(new ByteArrayInputStream(out.toByteArray())); // 填加文字 BufferedImage bi = new BufferedImage(1080, 1372, BufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.drawImage(image, 0, 0, null); g.setFont(new Font("苹方", Font.PLAIN, 40)); g.setColor(Color.ORANGE); g.drawString("hello!", 220, 100); g.drawString("you", 220, 150); g.dispose(); ImageIO.write(bi, "jpg", new File("E:/testImage.jpg")); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律