java实现仿微信群组合头像

来源:互联网  宽屏版  评论

2016-05-28 12:54:16

java实现仿微信群组合头像package com.zovon.util;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import javax.imageio.ImageIO;/** * 该类是图片处理类 * * @author 王永丰 * 出处:http://www.cnblogs.com/zovon/p/4345501.html */public final class ImageUtil { /** 图片格式:JPG */ PRivate static final String PICTRUE_FORMATE_JPG = "jpg"; private ImageUtil() { }/** * 生成组合头像 * * @param paths * 用户图像 * @throws IOException */ public static void getCombinationOfhead(List paths) throws IOException { List bufferedImages = new ArrayList(); // 压缩图片所有的图片生成尺寸同意的 为 50x50 for (int i = 0; i < paths.size(); i++) { bufferedImages.add(ImageUtil.resize2(paths.get(i), 50, 50, true)); } int width = 112; // 这是画板的宽高 int height = 112; // 这是画板的高度 // BufferedImage.TYPE_INT_RGB可以自己定义可查看API BufferedImage outImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 生成画布 Graphics g = outImage.getGraphics(); Graphics2D g2d = (Graphics2D) g; // 设置背景色 g2d.setBackground(new Color(231,231,231)); // 通过使用当前绘图表面的背景色进行填充来清除指定的矩形。 g2d.clearRect(0, 0, width, height); // 开始拼凑 根据图片的数量判断该生成那种样式的组合头像目前为4中 int j = 1; for (int i = 1; i <= bufferedImages.size(); i++) { if (bufferedImages.size() == 4) { if (i <= 2) { g2d.drawImage(bufferedImages.get(i - 1), 50 * i + 4 * i - 50, 4, null); } else { g2d.drawImage(bufferedImages.get(i - 1), 50 * j + 4 * j - 50, 58, null); j++; } } else if (bufferedImages.size() == 3) { if (i <= 1) { g2d.drawImage(bufferedImages.get(i - 1), 31, 4, null); } else { g2d.drawImage(bufferedImages.get(i - 1), 50 * j + 4 * j - 50, 58, null); j++; } } else if (bufferedImages.size() == 2) { g2d.drawImage(bufferedImages.get(i - 1), 50 * i + 4 * i - 50, 31, null); } else if (bufferedImages.size() == 1) { g2d.drawImage(bufferedImages.get(i - 1), 31, 31, null); } // 需要改变颜色的话在这里绘上颜色。可能会用到AlphaComposite类 } String outPath = "E:\\b.jpg"; String format = "JPG"; ImageIO.write(outImage, format, new File(outPath)); } /** * 图片缩放 * * @param filePath * 图片路径 * @param height * 高度 * @param width * 宽度 * @param bb * 比例不对时是否需要补白 */ public static BufferedImage resize2(String filePath, int height, int width, boolean bb) { try { double ratio = 0; // 缩放比例 File f = new File(filePath); BufferedImage bi = ImageIO.read(f); Image itemp = bi.getScaledInstance(width, height, Image.SCALE_SMOOTH); // 计算比例 if ((bi.getHeight() > height) || (bi.getWidth() > width)) { if (bi.getHeight() > bi.getWidth()) { ratio = (new Integer(height)).doubleValue() / bi.getHeight(); } else { ratio = (new Integer(width)).doubleValue() / bi.getWidth(); } AffineTransformOp op = new AffineTransformOp( AffineTransform.getScaleInstance(ratio, ratio), null); itemp = op.filter(bi, null); } if (bb) { // copyimg(filePath, "D:\\img"); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); g.setColor(Color.white); g.fillRect(0, 0, width, height); if (width == itemp.getWidth(null)) g.drawImage(itemp, 0, (height - itemp.getHeight(null)) / 2, itemp.getWidth(null), itemp.getHeight(null), Color.white, null); else g.drawImage(itemp, (width - itemp.getWidth(null)) / 2, 0, itemp.getWidth(null), itemp.getHeight(null), Color.white, null); g.dispose(); itemp = image; } return (BufferedImage) itemp; } catch (IOException e) { e.printStackTrace(); } return null; }}

java实现仿微信群组合头像package com.zovon.util;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import javax.imageio.ImageIO;/** * 该类是图片处理类 * * @author 王永丰 * 出处:http://www.cnblogs.com/zovon/p/4345501.html */public final class ImageUtil { /** 图片格式:JPG */ PRivate static final String PICTRUE_FORMATE_JPG = "jpg"; private ImageUtil() { }/** * 生成组合头像 * * @param paths * 用户图像 * @throws IOException */ public static void getCombinationOfhead(List paths) throws IOException { List bufferedImages = new ArrayList(); // 压缩图片所有的图片生成尺寸同意的 为 50x50 for (int i = 0; i < paths.size(); i++) { bufferedImages.add(ImageUtil.resize2(paths.get(i), 50, 50, true)); } int width = 112; // 这是画板的宽高 int height = 112; // 这是画板的高度 // BufferedImage.TYPE_INT_RGB可以自己定义可查看API BufferedImage outImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 生成画布 Graphics g = outImage.getGraphics(); Graphics2D g2d = (Graphics2D) g; // 设置背景色 g2d.setBackground(new Color(231,231,231)); // 通过使用当前绘图表面的背景色进行填充来清除指定的矩形。 g2d.clearRect(0, 0, width, height); // 开始拼凑 根据图片的数量判断该生成那种样式的组合头像目前为4中 int j = 1; for (int i = 1; i <= bufferedImages.size(); i++) { if (bufferedImages.size() == 4) { if (i <= 2) { g2d.drawImage(bufferedImages.get(i - 1), 50 * i + 4 * i - 50, 4, null); } else { g2d.drawImage(bufferedImages.get(i - 1), 50 * j + 4 * j - 50, 58, null); j++; } } else if (bufferedImages.size() == 3) { if (i <= 1) { g2d.drawImage(bufferedImages.get(i - 1), 31, 4, null); } else { g2d.drawImage(bufferedImages.get(i - 1), 50 * j + 4 * j - 50, 58, null); j++; } } else if (bufferedImages.size() == 2) { g2d.drawImage(bufferedImages.get(i - 1), 50 * i + 4 * i - 50, 31, null); } else if (bufferedImages.size() == 1) { g2d.drawImage(bufferedImages.get(i - 1), 31, 31, null); } // 需要改变颜色的话在这里绘上颜色。可能会用到AlphaComposite类 } String outPath = "E:\\b.jpg"; String format = "JPG"; ImageIO.write(outImage, format, new File(outPath)); } /** * 图片缩放 * * @param filePath * 图片路径 * @param height * 高度 * @param width * 宽度 * @param bb * 比例不对时是否需要补白 */ public static BufferedImage resize2(String filePath, int height, int width, boolean bb) { try { double ratio = 0; // 缩放比例 File f = new File(filePath); BufferedImage bi = ImageIO.read(f); Image itemp = bi.getScaledInstance(width, height, Image.SCALE_SMOOTH); // 计算比例 if ((bi.getHeight() > height) || (bi.getWidth() > width)) { if (bi.getHeight() > bi.getWidth()) { ratio = (new Integer(height)).doubleValue() / bi.getHeight(); } else { ratio = (new Integer(width)).doubleValue() / bi.getWidth(); } AffineTransformOp op = new AffineTransformOp( AffineTransform.getScaleInstance(ratio, ratio), null); itemp = op.filter(bi, null); } if (bb) { // copyimg(filePath, "D:\\img"); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); g.setColor(Color.white); g.fillRect(0, 0, width, height); if (width == itemp.getWidth(null)) g.drawImage(itemp, 0, (height - itemp.getHeight(null)) / 2, itemp.getWidth(null), itemp.getHeight(null), Color.white, null); else g.drawImage(itemp, (width - itemp.getWidth(null)) / 2, 0, itemp.getWidth(null), itemp.getHeight(null), Color.white, null); g.dispose(); itemp = image; } return (BufferedImage) itemp; } catch (IOException e) { e.printStackTrace(); } return null; }}

java 头像 微信群_java实现仿微信群组合头像相关推荐

  1. 漂流瓶php源码,微信小程序之仿微信漂流瓶

    [实例简介] 微信小程序之仿微信漂流瓶 [实例截图] [核心代码] a4c6f919-add7-4dc7-bafa-9a884a00f2e3 └── wx_plp ├── app.js ├── app ...

  2. php 合成微信头像,PHP 图片合成、仿微信群头像的方法示例

    搜索热词 本文实例讲述了PHP 图片合成.仿微信群头像的方法.分享给大家供大家参考,具体如下: 参考文章: 作者:凯歌~,PHP图片合成方法(多张图片合成一张)https://www.jb51.net ...

  3. 环信群列表 php,一行代码实现群聊头像(用环信仿微信群聊头像)

    做这个环信群聊头像的时候,我在考虑怎么自定义,怎么去拼接这个群聊头像,怎么获取群成员的头像,怎么在群成员退出群聊的时候更新头像,,, 群聊的东西真的很多,最近刚刚弄完群聊头像,并没有考虑到退出的时候怎 ...

  4. java读取微信证书_Java中的微信支付(2):API V3 微信平台证书的获取与刷新

    1. 前言 在Java中的微信支付(1):API V3版本签名详解一文中胖哥讲解了微信支付V3版本API的签名,当我方(你自己的服务器)请求微信支付服务器时需要根据我方的API证书对参数进行加签,微信 ...

  5. android仿微信头像点击放大查看,仿微信查看图片(带大小图切换查看)

    之前一直想仿微信朋友圈那样做个图片查看,但是看了网上很多demo都觉得比较简单,少了从小图切换到大图的加载过程,都只是在所有预览里加载大图,点击进去也是加载大图,于是在网上下载了别人的demo自己修改 ...

  6. html仿微信评论输入框,简单仿微信朋友圈评论功能

    [实例简介] 简单实现了微信朋友圈评论的功能,被点击的评论能够随着输入框高度的改变而改变位置! [实例截图] [核心代码] 简单仿微信朋友圈评论 └── TalkInTalk ├── AndroidM ...

  7. android微信视频查看源代码,Android仿微信视频拍摄UI, 基于ffmpeg的视频录制编辑

    功能主要包含5点: 1.基于ffmpeg的视频拍摄及合成; 2.自定义拍摄按钮, 长按放大并且显示拍摄进度; 3.自定义view, 实现手绘涂鸦; 4.自定义可触摸旋转缩放位移的表情文字view; 5 ...

  8. 仿android微信视频编辑,Android 仿微信短视频录制

    VideoRecorder Android 仿微信短视频录制 预览 Bug 修复与更新日志: 更新日志: 1.2.0:仿照微信,短按拍照长按拍摄 --19.06.21 1.1.5:增加进度条,修改依赖 ...

  9. h5仿微信聊天室weChatRoom|仿微信聊天界面

    html5仿微信聊天|h5仿微信聊天室|仿微信聊天界面|仿微信群聊/单聊 平时一闲下来就撸项目代码,最近一直在开发h5仿微信聊天项目,使用到了html5+css3+zepto+iscroll+swip ...

最新文章

  1. 希尔排序算法实现思想个人理解
  2. FALCON组装参数学习
  3. 数据结构与算法笔记(三)—— 链表(单链表、循环链表、双向链表)
  4. html(2)标签(1)
  5. Mircosoft 正式把Windows Mobile改名为Windows Phone,你会因此而购买Windows Phone吗?
  6. 用VC++实现图像检索技术(转)
  7. python能做什么工作-会python语言能做什么工作
  8. 接收POst数据流数据
  9. GB28181之H264打包PS
  10. 《Web应用基础》课程结业报告
  11. 移远UMTS LTE EVB Kit
  12. ajax接收反参时,接收到[object XMLDocument]时的处理方法
  13. POJ 3674 Super Assassin 笔记 动态规划
  14. 在wamp使用tp5框架开发,连接数据库
  15. OpenWrt TL-WR841N WAN口down问题
  16. 微信公众号开发系统入门教程之公众号与小程序、APP的区别
  17. iOS 战斗机跑车效果
  18. 关于随机森林randomforest对结果进行分类的原则的个人理解
  19. Django Rest framework (看完直接上手用)
  20. 日活100wAPP一天的广告收益有多少?

热门文章

  1. Polygon Collider 2D无法编辑的问题
  2. 2014-2021年度博客大赛作品合集
  3. notepad++ 配置成VIM模式
  4. 【车载以太网】【AVB/TSN】概述
  5. 使用正则表达式验证邮箱格式?
  6. 使用ConstraintLayout遇到的些许问题
  7. 在Vue项目中处理ESlint语法报错问题的方法
  8. javaScript 显示图片的例子
  9. 一个云管理平台的架构与功能设计经验谈
  10. LNMP搭建,nginx安装,php-fpm,版本升级,配置虚拟主机