- 浏览: 325109 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ajax忘了跳转:
谢谢分享,基于你的思路。我改良了一版,可供参考public s ...
一个整数的所有最小因子 -
baobaodehao1991:
楼主,合并多列,单元格内容并不能居中,选中合并的单元格,除了前 ...
把table表格内容导出为excel -
lbaaixy:
楼主,小弟最近也在弄这个东西。有点小问题java.lang.C ...
flex + red5实现视频会议 -
weilikk:
好像只能替换整行,如果是一行中有其他数据,只替换行中某个位置就 ...
poi替换模板标签为图片 -
chinaxiaofeng8:
在吗,兄弟,你那个代码怎么运行看效果的
flex + red5实现视频会议
开发了一个聊天工具,群组头像像仿照微信的头像那样显示成员头像合成图片,百度了一下,发现没有顺手的,就自己动手写了一个,现在分享给大家。
我所有用户图片都是120*120的,合成图片为132*132,九宫格的话用户图片边到合成图片边为3,依次类推,里面的120,132,40,30等大小根据自己的头像大小灵活变动即可
我所有用户图片都是120*120的,合成图片为132*132,九宫格的话用户图片边到合成图片边为3,依次类推,里面的120,132,40,30等大小根据自己的头像大小灵活变动即可
public static String[] getXy(int size){ String[] s = new String[size]; int _x = 0; int _y = 0; if(size ==1){ _x = _y = 6; s[0] = "6,6"; } if(size == 2){ _x =_y = 4; s[0] = "4,"+(132/2-60/2); s[1] = 60+2*_x+","+ (132/2-60/2); } if(size == 3){ _x=_y =4; s[0] = (132/2-60/2)+","+_y; s[1] = _x+","+(60+2*_y); s[2] = (60+2*_y)+","+(60+2*_y); } if(size ==4){ _x=_y =4; s[0] = _x+","+_y; s[1] = (_x*2 + 60)+","+_y; s[2] = _x+","+(60+2*_y); s[3] = (60+2*_y)+","+(60+2*_y); } if(size == 5){ _x = _y = 3; s[0] = (132-40*2-_x)/2+","+(132-40*2-_y)/2; s[1] = ((132-40*2-_x)/2+40+_x)+","+(132-40*2-_y)/2; s[2] = _x+","+((132-40*2-_x)/2+40+_y); s[3] = (_x*2+40)+","+((132-40*2-_x)/2+40+_y); s[4] = (_x*3+40*2)+","+((132-40*2-_x)/2+40+_y); } if(size == 6){ _x = _y = 3; s[0] = _x+","+((132-40*2-_x)/2); s[1] = (_x*2+40)+","+((132-40*2-_x)/2); s[2] = (_x*3+40*2)+","+((132-40*2-_x)/2); s[3] = _x+","+((132-40*2-_x)/2+40+_y); s[4] = (_x*2+40)+","+((132-40*2-_x)/2+40+_y); s[5] = (_x*3+40*2)+","+((132-40*2-_x)/2+40+_y); } if(size == 7){ _x=_y =3; s[0] = (132-40)/2+","+_y; s[1] = _x+","+(_y*2+40); s[2] = (_x*2+40)+","+(_y*2+40); s[3] = (_x*3+40*2)+","+(_y*2+40); s[4] = _x+","+(_y*3+40*2); s[5] = (_x*2+40)+","+(_y*3+40*2); s[6] = (_x*3+40*2)+","+(_y*3+40*2); } if(size == 8){ _x=_y =3; s[0] = (132-80-_x)/2+","+_y; s[1] = ((132-80-_x)/2+_x+40)+","+_y; s[2] = _x+","+(_y*2+40); s[3] = (_x*2+40)+","+(_y*2+40); s[4] = (_x*3+40*2)+","+(_y*2+40); s[5] = _x+","+(_y*3+40*2); s[6] = (_x*2+40)+","+(_y*3+40*2); s[7] = (_x*3+40*2)+","+(_y*3+40*2); } if(size == 9){ _x=_y = 3; s[0]=_x+","+_y; s[1] = _x*2+40+","+_y; s[2] = _x*3+40*2 +","+_y; s[3] = _x+","+(_y*2+40); s[4] = (_x*2+40)+","+(_y*2+40); s[5] = (_x*3+40*2)+","+(_y*2+40); s[6] = _x+","+(_y*3+40*2); s[7] = (_x*2+40)+","+(_y*3+40*2); s[8] = (_x*3+40*2)+","+(_y*3+40*2); } return s; } public static int getWidth(int size){ int width = 0; if(size == 1){ width = 120; } if(size>1 && size<=4){ width = 60; } if(size>=5){ width = 40; } return width; } public static void download(String urlString, String filename,String savePath) throws Exception { // 构造URL URL url = new URL(urlString); // 打开连接 URLConnection con = url.openConnection(); //设置请求超时为5s con.setConnectTimeout(5*1000); // 输入流 InputStream is = con.getInputStream(); // 1K的数据缓冲 byte[] bs = new byte[1024]; // 读取到的数据长度 int len; // 输出的文件流 File sf=new File(savePath); if(!sf.exists()){ sf.mkdirs(); } OutputStream os = new FileOutputStream(sf.getPath()+File.separator+filename); // 开始读取 while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } // 完毕,关闭所有链接 os.close(); is.close(); } public static String zoom(String sourcePath,String targetPath,int width,int height) throws IOException{ File imageFile = new File(sourcePath); if(!imageFile.exists()){ throw new IOException("Not found the images:"+sourcePath); } if(targetPath==null || targetPath.isEmpty()) targetPath = sourcePath; String format = sourcePath.substring(sourcePath.lastIndexOf(".")+1,sourcePath.length()); BufferedImage image = ImageIO.read(imageFile); image = zoom(image,width,height); ImageIO.write(image, format, new File(targetPath)); return targetPath; } private static BufferedImage zoom(BufferedImage sourceImage , int width , int height){ BufferedImage zoomImage = new BufferedImage(width, height, sourceImage.getType()); Image image = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH); Graphics gc = zoomImage.getGraphics(); gc.setColor(Color.WHITE); gc.drawImage( image , 0, 0, null); return zoomImage; } public static void createImage(File[] files,String outPath) throws Exception{ String[] imageSize = getXy(files.length); int width = getWidth(files.length); BufferedImage ImageNew = new BufferedImage(132,132,BufferedImage.TYPE_INT_RGB); //设置背景为白色 for(int m=0;m<132;m++){ for(int n=0;n<132;n++){ ImageNew.setRGB(m, n, 0xFFFFFF); } } for(int i=0;i<imageSize.length;i++){ String size = imageSize[i]; String[] sizeArr = size.split(","); int x = Integer.valueOf(sizeArr[0]); int y = Integer.valueOf(sizeArr[1]); String f = zoom(files[i].getPath(),SystemConfig.getFileFsBase()+File.separator+"group"+File.separator+"temp",width,width); File fileOne = new File(f); BufferedImage ImageOne = ImageIO.read(fileOne); //从图片中读取RGB int[] ImageArrayOne = new int[width*width]; ImageArrayOne = ImageOne.getRGB(0,0,width,width,ImageArrayOne,0,width); ImageNew.setRGB(x,y,width,width,ImageArrayOne,0,width);//设置左半部分的RGB } File outFile = new File(outPath); ImageIO.write(ImageNew, "png", outFile);//写图片 } public static void main(String[] args) throws Exception{ File f = new File("D:\\group"); File[] fArr = f.listFiles(); createImage(fArr,"D:\\group\\g.png"); }
发表评论
-
汉字转拼音
2015-06-18 13:44 1079/* * Copyright (C) 2011 The ... -
android显示圆形图片
2015-06-18 13:42 1022package com.*.widget; imp ... -
poi替换模板标签为图片
2013-08-19 14:49 8975在问答频道看到有人求poi模板替换图片的需求,百度一下,网上没 ... -
为hibernate添加数据库方言函数
2013-06-27 19:31 5242在sessionFactory中配置hibernate.dia ... -
jvm内存映像分析
2013-05-23 20:11 6434jdk自带的jmap就是java内存映像工具,可以 ... -
n个数组各取一数的不重复组合
2013-04-27 00:00 2902package collection; import ... -
求最长的递增子数组
2013-04-24 13:58 1358package com.chinahrt.zyn.pang ... -
从m个字符选出n个的所有组合
2013-04-23 15:49 1521import java.util.ArrayList;imp ... -
查找最小的K个数
2013-04-13 12:04 1595package com.chinahrt.zyn.pango ... -
求连续子数组的最大和
2013-04-11 17:27 1476package com.chinahrt.zyn.pang ... -
求N个字符的全排列
2013-04-10 10:55 1736package com.chinahrt.zyn.pango ... -
web.xml的读取顺序
2013-03-30 11:22 4401由于项目中 ... -
spring的bean实例化时间
2013-03-30 10:54 2578前两天在问答频道看到有同学问spring的b ... -
运行应用,Could not open: device
2012-12-30 22:11 2614右键点击我的电脑-属性-高级系统设置-环境变量,在系统变量里边 ... -
Android:Debug certificate expired on DATE 解决方法 (转)
2012-12-30 22:04 1190使用Eclipse调试Android程序,源代码没有错,但总是 ... -
把table表格内容导出为excel
2012-12-21 13:54 6138package com.chinahrt.report.e ... -
Java 编程规则(think in java 第四版)
2012-11-22 13:38 1220(1) 类名首字母应该大写 ... -
jetty嵌入式使用方法
2012-09-17 16:08 12145以jetty-hightide-8.1.6.v20120903 ... -
jmail接收邮件(转)
2012-08-07 10:57 2926package com.chinahrt.zyn; im ... -
java求集合交集和并集
2012-07-17 20:16 3515在问答频道遇到求助集合求交集或者并集的问题,自己翻了下api, ...
相关推荐
实现类似微信的9宫格 ,从相册选9张或直接拍照 ,获得后,对图片做bitmap的转换处理,处理完成后,逐一向服务器上传,成功后,保存服务器返回的路径
在Android开发中,"仿微信支付宫格导航"是一个常见的用户界面(UI)设计,它模仿了微信支付页面中的选项卡式导航布局。这个布局通常包含多个宫格,每个宫格代表一个功能或操作,点击后可以跳转到相应的页面。这种...
本文将深入探讨如何创建一个名为“Android-仿微信群头像九宫格控件”的组件,该控件能够根据给定的用户头像列表,以九宫格的形式展示。 首先,我们要了解这个控件的基本原理。九宫格头像控件的核心是动态计算每个...
在Android开发中,微信朋友圈的9宫格图片展示与多选图片功能是常见的需求,尤其在社交类应用中。这个项目旨在教你如何在Android应用中实现类似的功能。下面将详细介绍这些知识点。 一、9宫格图片展示 1. **自定义...
"仿微信朋友圈9宫格图片选择器"就是一个典型的例子,它模仿了微信在朋友圈发布时的图片选择体验,允许用户以9宫格的形式预览和选择图片,同时还提供了可删除功能,使得用户能够更加方便地调整自己的图片选择。...
在Android开发中,微信朋友圈的9宫格图片展示和多选图片功能是常见的需求,尤其在社交类应用中。这个示例将详细讲解如何实现这一功能。 首先,我们需要理解9宫格布局的基本概念。9宫格是一种将屏幕分为9个等大小...
本话题主要关注如何使用Java或Android技术来实现“仿微群聊合成1到9个人头像”的功能。 首先,我们需要理解头像合成就是一门图像处理的艺术,它涉及到图片的裁剪、缩放、位置调整以及最终的合并。在这个过程中,...
"仿微信朋友圈图片九宫格布局"是一个常见的设计模式,它旨在优化图片展示,使得用户能快速浏览并理解信息。这种布局方式在移动应用中尤其常见,因为它有效地利用了有限的屏幕空间,同时保持了清晰的视觉层次。 首先...
在Android应用开发中,创建一个类似微信或支付宝钱包的宫格界面是一项常见的需求,它可以用于展示各种功能图标或者卡片,使用户能够快速访问和操作。本篇内容将深入讲解如何实现这样一个宫格界面,主要围绕以下几个...
对于“仿微信”的部分,意味着我们需要考虑微信特定的设计风格和交互效果,例如圆角头像、头像点击后的放大预览、滑动浏览等。这些可以通过以下方式实现: 1. 圆角头像:使用Shape Drawable或自定义View,设置边框...
九宫格心形拼图小程序源码,带流量主微信小程序源码。可以自定义拼图形状,保存张数 自由填充图片、自由剪裁图片等。并带有流量主广告位,有需要的可以下载看看。
ImageSelector则是一个用于实现多种图片选择方式的库,它可以模仿微信的9宫格图片选择模式,也可以支持无限数量的图片批量选择。ImageSelector提供了丰富的界面样式和交互体验,允许用户在系统相册中选择图片,同时...
该资源提供了博文的源代码,对应的博文链接为http://blog.csdn.net/airsaid/article/details/51026447。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
2. **9宫格展示**:在多图选择时,通常会采用9宫格的形式来展示预览图片,方便用户快速浏览和选择,这也是微信等应用的标准样式。 3. **图片裁剪**:除了选择图片,该组件还提供图片裁剪功能,用户可以自由调整裁剪...
在iOS开发中,"ios-仿探探六宫格相册.zip"的项目是一个典型的图片展示应用的实现,尤其在社交应用中非常常见,如探探等。这种六宫格相册的设计通常用于用户个人资料页,展示用户的多张照片。下面我们将详细探讨这个...
在网上找了些仿微信群聊头像的开源库后,发现没特别好用的,或者说满足我需求的,就只好在别人的基础上改了下,也就有了这样的自定义控件了,以此来实现微信群聊头像的效果,效果图如下所示: 主要实现: 一、...
9. **安全性**:项目可能考虑了安全问题,如防止文件上传攻击、XSS跨站脚本攻击以及CSRF跨站请求伪造等。 10. **部署与运行环境**:项目可能在Tomcat、Jetty等应用服务器上运行,并可能使用Docker进行容器化部署。 ...
它还支持微信群组,DingTalk群组,QQ群组头像效果。 DragSortView 类似于微博/微信发布的动态图片选择九格视图。支持按放大效果,拖放排序,拖放到指定位置删除。 酒馆 dependencies : nine_grid_view : ^2.0.0 ...
Starling9宫格类库是针对Adobe Starling框架的一个扩展,专门用于实现图像的9宫格缩放功能。在游戏开发或UI设计中,9宫格缩放是一种常见的技术,它允许图片在保持角部不变形的情况下进行拉伸,从而在不同尺寸的屏幕...