首页 文章 精选 留言 我的

精选列表

搜索[图数据库],共10000篇文章
优秀的个人博客,低调大师

带动态背景图的二维码生成器

BitQR-Code Through image generate QR-Code . 一个优雅的 QR 二维码生成器 Github项目地址 : https://github.com/CasterWx/BitQR-Code 样例 拿起你的手机扫描下面的二维码试试吧! 原图 Version-3 | Version-5 | 直接拼凑GIF | 分解生成 || ------------ | ------------- | ------------ | | | | | 原图1 原图2 原图3 GIF1 GIF2 GIF3 GIF分解为多个帧 原GIF 第四帧 第七帧 第十帧 第十三帧 第十六帧 第二十帧 生成GIF 2018年最后一天的最后一篇 引用 在项目中导入 QRCode.jar 以添加依赖: <component name="libraryTable"> <library name="QRCode"> <CLASSES> <root url="jar://$PROJECT_DIR$/src/lib/QRCode.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES /> </library> </component> 快速上手 1. "快速导入背景图片" 只想显示一张麻衣学姐的照片 BufferedImage writeImg = ImageIO.read(new File("麻衣学姐.jpg")); BufferedImage bf = new BufferedImage(writeImg.getWidth(),writeImg.getHeight(),BufferedImage.TYPE_INT_RGB); Graphics2D gs = bf.createGraphics() ; gs.clearRect(0,0,bf.getWidth(),bf.getHeight()); gs.drawImage(writeImg,0,0,bf.getWidth(),bf.getHeight(),null); writeImg是读取到的图片,然后根据这张照片创建Graphics的大小。 gs.drawImage(writeImg,0,0,bf.getWidth(),bf.getHeight(),null); 便可以将writeImg绘制到Graphics中了。 File imagefile = new File(imgPath); ImageIO.write(bf,"png",imagefile); 现在就可以利用ImageIO将图片存储到本地了 效果 2. "图片中使用画笔" Graphics2D gs = bf.createGraphics() ; gs.setBackground(Color.white); gs.clearRect(0,0,bf.getWidth(),bf.getHeight()); gs.drawImage(writeImg,0,0,bf.getWidth(),bf.getHeight(),null); gs是创建出的画布,setBackground可以设置其背景色,也可以直接drawImage()将图片绘制进去。 gs.setColor(Color.BLACK); gs.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,1.0f)); gs.fillRect(j*mini+begin,i*mini+begin,mini,mini ); setColor用于设置画笔颜色。 setComposite用于设置透明度 fillRect是绘制动作,参数值为起始坐标和结束坐标。 3. "二维码的本质是_______" 二维码的本质是二进制表示数据 二维码的黑白格,其实就代表了0和1两位数据,我们只需要将数据转化为bytes数组,然后根据数组的0-1值直接绘制到图片上,即可生成相应的二维码。 byte []contentByte = "需要表示的数据".getBytes("utf-8"); boolean [][]cidesOut = qrcode.calQrcode(contentByte) ; 这样就可以生成一个cidesOut数组来表示二维码的黑白格。 qrcode是二维码的生成配置,容错率和Qrcode版本等。 Qrcode qrcode = new Qrcode(); qrcode.setQrcodeErrorCorrect('M'); qrcode.setQrcodeEncodeMode('B'); qrcode.setQrcodeVersion(3); 4. "黑白格衬衫!!!" 二维码的本质是黑白格衬衫!!! 双层for循环遍历cidesOut这个boolean数组,如果是true就绘制黑色。 for(int i=0;i<cidesOut.length;i++){ for(int j=0;j<cidesOut.length;j++){ if(cidesOut[j][i]){ gs.fillRect(j*mini+begin,i*mini+begin,mini,mini ); } } } GIF动画帧绘制 1. "如何绘制一个GIF" AnimatedGifEncoder e = new AnimatedGifEncoder(); e.setRepeat(0); e.start(newPic); BufferedImage src[] = new BufferedImage[pic.length]; for (int i = 0; i < src.length; i++) { e.setDelay(playTime); src[i] = ImageIO.read(new File(pic[i])); e.addFrame(src[i]); //添加到帧中 } e.finish(); 首先定义一个GIF生成类. AnimatedGifEncoder e = new AnimatedGifEncoder(); e.start(newPic); newPic代表最后生成的gif文件名. e.setDelay(playTime); 设置播放的延迟时间playTime. e.setDelay(playTime); src[i] = ImageIO.read(new File(pic[i]));e.addFrame(src[i]); 最后将BufferedImage图片添加到帧中. e.finish(); GIF 2. "如何分解一个GIF" 加载gif GifDecoder gd = new GifDecoder();//要处理的图片 int status = gd.read(new FileInputStream(new File("marry.gif"))); if (status != GifDecoder.STATUS_OK) { return; } GIF帧数为gd.getFrameCount(); 我们可以直接获取每一帧的图片并且保存到本地。 for (int i = 0; i < gd.getFrameCount(); i++) { //取得gif的每一帧 BufferedImage frame = gd.getFrame(i); // 存储frame到本地 } 可以将一个GIF分解成帧之后,我们就可以将这一帧添加二维码,然后加入到一个新的GIF中了。 for (int i = 0; i < gd.getFrameCount(); i++) { //取得gif的每一帧 BufferedImage frame = gd.getFrame(i); Graphics2D gs = frame.createGraphics() ; gs.drawImage(frame,0,0,frame.getWidth(),frame.getHeight(),null); int qrLength = frame.getHeight()-2*frame.getHeight()/10 ; int mini = qrLength/cidesOut.length ; int begin = (frame.getWidth() - mini*cidesOut.length)/2 ; for(int k=0;k<cidesOut.length;k++){ for(int j=0;j<cidesOut.length;j++){ if(cidesOut[j][k]){ gs.setColor(Color.BLACK); gs.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,1.0f)); gs.fillRect(j*mini+begin,k*mini+begin/4,mini,mini ); } } } int delay = gd.getDelay(i); ge.setDelay(delay); ge.addFrame(frame); 原图 GIF 原图 GIF 原图 GIF

优秀的个人博客,低调大师

【F3简介】一张图看懂FPGA-F3实例

近期,阿里云宣布全新一代FPGA云服务器F3正式上线,并且开通邀测。实现云上 FPGA 加速业务的快速研发、安全分发、一键部署和弹性伸缩能力。为人工智能产业、图片视频转码、基因计算提供强有力的加速服务。 在FPGA Shell架构上,F3不仅沿用了前代的技术,并且充分支持OpenCL,HLS以及RTL的开发流程,能够让多种应用程序开发的工程师,在不需要关注底层硬件细节的情况下,很好地完成异构计算的定制开发工作。 在硬件上,采用了创新的单卡双芯片设计,卡内双芯片互联带宽高达600Gbps,卡间互联通过硬核实现,支持100G Mac协议。单片FPGA逻辑量250万,外挂4个DDR4通道,提供64GB存储能力。 产品邀测链接,立即申请

优秀的个人博客,低调大师

《阿里技术参考图册》发布,公开600页技术全景图

如果你不甘心一直在写增删改查,希望看到更广的技术世界,阿里技术团队重磅发布的《阿里技术参考图册》,总计600余页,现已开放下载,将为你呈现阿里技术全景,走进各个技术领域的世界。 此书邀请了阿里多个重要部门的研究员、资深技术专家、资深算法专家参与撰写。内容分为研发篇、算法篇两册,全面展示了在超大规模的企业级应用需求下,阿里全新升级的大中台、小前台的技术组织架构,以及各个技术领域的突破及创新。 技无止境,阿里技术团队希望将经验分享给更多人。《阿里技术参考图册》现已开放下载,与业界同仁一起探索未来。 为何这套图册值得所有技术人收藏? 近日,英国品牌评估机构 Brand Finance 发布“2018 全球 100 个最有价值的科技品牌榜”,阿里巴巴成为中国最有价值的科技品牌,2017年研发投入居中国企业之首。 翻开此书,你可以清晰看到阿里繁荣的业

优秀的个人博客,低调大师

图的单源最短路径,Floyd算法(数据结构c++)

这个算法结构很是简单,但是理解还是有一定的困难,一开始做的时候想不明白,跟着算法自己动手画画就知道这个算法具体是怎么回事了。 时间复杂度是O(N*3) 算法有点动态规划的意思,有两个数组,一个(dis[])是记录俩顶点之间的最短路径的长度的,一个[path]数组是记录俩结点的中间结点的。在初始化这个数组的默认为 顶点的下标。。 最重要的就是下面的几步 if(dis[sta][end]>dis[sta][temp]+dis[temp][end]){ dis[sta][end] = dis[sta][temp]+dis[temp][end]; } 上面的代码就是这个算法的精华部分。 sta:开始的顶点,end:结束的顶点,temp:是sta和end上的中间结点 两者相比较,要是有更短的路径就跟新俩结点的距离。 以每一个结点为中间点,更新数组,也就是所有顶点的距离。 话不多说。上程序。。。。 OK 就这个多,之前的都是铺垫,注意看重点的部分,floyd算法部分

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册