当前位置:网站首页>图片打水印 缩放 和一个输入流的转换
图片打水印 缩放 和一个输入流的转换
2022-07-06 17:56:00 【全栈程序员站长】
大家好,又见面了,我是全栈君
图片打水印和缩放:
public final static BufferedImage[] pressImage(InputStream srcImg, String waterImg,float alpha) throws IOException {
//File file = new File(targetImg);
Image image = ImageIO.read(srcImg);
int width = image.getWidth(null);
int height = image.getHeight(null);
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image, 0, 0, width, height, null);
Image waterImage = ImageIO.read(new File(waterImg)); // 水印文件
int width_1 = waterImage.getWidth(null);
int height_1 = waterImage.getHeight(null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
int div=(int) (0.1*width_1);
for(int y=0,row=0;y<height;y+=height_1+div,row++)
{
int x=0;
for(;x<width;x+=width_1+div)
{
g.drawImage(waterImage, x, y, width_1, height_1, null); // 水印文件结束
}
}
g.dispose();
BufferedImage bufferedImage2=Thumbnails.of(bufferedImage).size(100, 100).asBufferedImage();
return new BufferedImage[]{bufferedImage,bufferedImage2};
}
图片的缩放使用了Thumbnails这个工具,(事实上它也能够用来打水印的,只是我还没有研究)
jar 包或者maven 请自行搜索
须要特别注意的是 Thumbnails 默认是依照等比例进行缩放的而且它的缩放规则是:
如果 把图片所放到 200*300
* 若图片横比200小。高比300小。不变 * 若图片横比200小,高比300大。高缩小到300,图片比例不变 * 若图片横比200大,高比300小。横缩小到200。图片比例不变 * 若图片横比200大,高比300大。图片按比例缩小,横为200或高为300
bufferInage转换 inputSteam
private InputStream getInputstreamFromBufferedImage(BufferedImage img) throws IOException{
ByteArrayOutputStream bs =new ByteArrayOutputStream();
ImageOutputStream imOut =ImageIO.createImageOutputStream(bs);
ImageIO.write(img,"jpg",imOut); //scaledImage1为BufferedImage,jpg为图像的类型
InputStream is =new ByteArrayInputStream(bs.toByteArray());
return is;
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116890.html原文链接:https://javaforall.cn
边栏推荐
- UI control telerik UI for WinForms new theme - vs2022 heuristic theme
- golang中的atomic,以及CAS操作
- Installation and testing of pyflink
- [Niuke] [noip2015] jumping stone
- NEON优化:矩阵转置的指令优化案例
- AI automatically generates annotation documents from code
- C语言实例_5
- NEON优化:性能优化常见问题QA
- 身体质量指数程序,入门写死的小程序项目
- The MySQL database in Alibaba cloud was attacked, and finally the data was found
猜你喜欢
HMM 笔记
JTAG debugging experience of arm bare board debugging
LLDP兼容CDP功能配置
Start from the bottom structure to learn the customization and testing of fpga---- FIFO IP
Dynamic planning idea "from getting started to giving up"
Transplant DAC chip mcp4725 to nuc980
免费白嫖的图床对比
[case sharing] basic function configuration of network loop detection
2022 Google CTF SEGFAULT LABYRINTH wp
从底层结构开始学习FPGA----FIFO IP的定制与测试
随机推荐
NEON优化:性能优化经验总结
从底层结构开始学习FPGA----FIFO IP的定制与测试
Sword finger offer II 035 Minimum time difference - quick sort plus data conversion
Docker method to install MySQL
Share a general compilation method of so dynamic library
Segmenttree
【js】获取当前时间的前后n天或前后n个月(时分秒年月日都可)
THREE.AxesHelper is not a constructor
Taro 小程序开启wxml代码压缩
C语言实例_5
Neon Optimization: summary of performance optimization experience
C language instance_ three
一起看看matlab工具箱内部是如何实现BP神经网络的
Transplant DAC chip mcp4725 to nuc980
让我们,从头到尾,通透网络I/O模型
Go zero micro service practical series (IX. ultimate optimization of seckill performance)
Boot - Prometheus push gateway use
2022 Google CTF SEGFAULT LABYRINTH wp
【C语言进阶篇】指针的8道笔试题
移植DAC芯片MCP4725驱动到NUC980