java实现微博九宫格图片切分
总看别人微博的九宫格广告,想想,实现倒是很简单,应该说简单到爆了,不过还是手写实现一下吧
主要思想:
1. 一个待绘制的BufferedImage,长宽都是原图的1/3
2. 使用graphics,通过偏移量选择绘制原图的区域
3. 绘制结束就可以输出到文件
4. 通过两层循环,绘制9个位置的全部图片
说完上图
原图
切分后的图片
代码也比较简单,实现起来很!方!便!
File imgfile;Image originimg;BufferedImage image;Graphics g;FileOutputStream out;JPEGImageEncoder encoder;try {// 获取原始图片imgfile = new File("input.jpg");originimg = ImageIO.read(imgfile);// 获取原始图片的宽和高int width = originimg.getWidth(null);int height = originimg.getHeight(null);for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {// 九宫格,每张图片大小都为原来的1/3image = new BufferedImage(width / 3, height / 3,BufferedImage.TYPE_INT_RGB);// 创建图片g = image.createGraphics();// 绘制图片g.drawImage(originimg, width * -i / 3, height * -j / 3,width, height, null);// 图片绘制完成,关闭gg.dispose();// 输出流和输出文件out = new FileOutputStream("output" + i + "-" + j + ".jpg");// 下面代码将输出图片转换为JPEG、JPG文件encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(image);out.close();System.out.println("输出文件output" + i + "-" + j + ".jpg");}}} catch (Exception e) {e.printStackTrace();}
打完收工
这里的问题就在于长方形的图片切出来也是长方形的,未必好看,但是直接切成正方形的需要考虑截取哪一部分
以下图为例
原图为长方形的截图效果如下
如果依然希望输出正方型,压缩图片效果不好,所以采用直接截取图片的方式
File imgfile;Image originimg;BufferedImage image;Graphics g;FileOutputStream out;JPEGImageEncoder encoder;try {// 获取原始图片imgfile = new File("input3.jpg");originimg = ImageIO.read(imgfile);// 获取原始图片的宽和高int width = originimg.getWidth(null);int height = originimg.getHeight(null);// 如果输入为长方形,重新计算长宽int outputwidth = width > height ? height : width;int outputheight = outputwidth;for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {// 九宫格,每张图片大小都为原来的1/3// 长方形,新建图片大小为计算后的正方型的1/3image = new BufferedImage(outputwidth / 3,outputheight / 3, BufferedImage.TYPE_INT_RGB);// 创建图片g = image.createGraphics();// 绘制图片// 长方形,计算偏移量的数据采用计算后的正方形g.drawImage(originimg, outputwidth * -i / 3, outputheight* -j / 3, width, height, null);// 图片绘制完成,关闭gg.dispose();// 输出流和输出文件out = new FileOutputStream("output" + i + "-" + j + ".jpg");// 下面代码将输出图片转换为JPEG、JPG文件encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(image);out.close();System.out.println("输出文件output" + i + "-" + j + ".jpg");}}} catch (Exception e) {e.printStackTrace();}
最终截取了正方形的部分,效果如下
java实现微博九宫格图片切分相关推荐
- python如何将图片打包进exe里_用python将图片切分为九宫格 并打包成exe可执行文件(附源码)...
前言 经常在朋友圈或者微博看到九宫格显示的图片,虽然是九张图片,但是这是一张图片经过切割而成的,显示效果很震撼.今天,我们就用python将图片切分为九宫格,并打包成exe可执行文件,就算不需要代码也 ...
- python语言编写一个生成九宫格图片的代码_python实现图片九宫格分割
大家都知道在微信朋友圈或者微博以及QQ动态中,有很多"强迫症患者"发图片都爱发9张,而有些图是一张图片分成的九宫图,对于这种操作,大家知道是怎么做到的吗? 本文就是用Python做 ...
- ImageMagick将多张图片拼接成一张图片_高逼格九宫格图片,2020年朋友圈图片,自己做不求人...
元旦快乐!! 2019年过去了,2020年你的计划里不知道还有没有2018年的待完成事项呢?(拖延症的话,经常是拖着拖着就没了吧= =)无论如何在许下愿望列下清单的那一刻我们也是斗志满分阿! 今天给大 ...
- android 最新 九宫格,Android开发中怎么显示一个九宫格图片
Android开发中怎么显示一个九宫格图片 发布时间:2020-11-21 15:09:33 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关Android开发中怎么显示一个九宫格 ...
- android从九宫格全屏预览,仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图...
AssNineGridView 仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图(可自定义). 写在前面 这是一个九宫格控件,本来是很久之前就写好了,现在才开源出来,也是看了很多优秀 ...
- Android 实现仿微信朋友圈九宫格图片+NineGridView+ImageWatcher(图片查看:1.预览,2.拖动,3.放大,4.左右滑动,5.长按保存到手机)的功能
一.测试 实现: 二.添加依赖包: implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.recycl ...
- python123九宫格输入_python制作朋友圈九宫格图片
本文实例为大家分享了python朋友圈九宫格图片的具体制作代码,供大家参考,具体内容如下 将一张图片,切分成九宫格的样式: 原图: # -*- coding: UTF-8 -*- from PIL i ...
- 如何利用PPT制作九宫格图片效果
在朋友圈.微博经常可以看到有人发九宫格图片.这里所说的九宫格图片其实是一张图,分在九张图片中显示,能够产生一种留白和想象的空间. 在制作PPT的过程中也可以做一个九宫格图片,增强视觉效果.下面介绍1种 ...
- python朋友圈教程_Python 生成你的朋友圈九宫格图片
关于微信之前写过以下文章,有兴趣可以点击查看: 如何导出你的微信语音 c 盘空间又满了?微信清理神器帮你释放空间 微信撤回的消息也能看到! 如何备份可能被删的公众号文章和网页 如何在电脑上登陆多个微信 ...
最新文章
- springmvc常用配置
- 设计模式复习-备忘录模式
- 由小游戏跳一跳想到的
- apk提取加密素材_从apk包中提取unity资源
- mysql创建数据库schooldb_mysql创建新用户和数据库
- 教你用Python自制拼图小游戏,轻松搞定熊孩子
- 各种渲染软件设计理论详解
- Oracle之Union与Union all的区别
- 安装版mysql数据库data在_MySQL 5.7版本的安装使用详细教程+更改数据库data的存储路径...
- 游戏开发入行大师攻略
- FANUC机器人_KAREL编程入门学习(1)
- 第一次发博客,随便说说
- 基于PaddlePaddle 2.0动态图实现的CRNN文字识别模型
- Linux-网络管理
- 实验六—基本数据管理(三)
- 基于WPA的暴力破解(JAVA实现破解WIFI)
- 全链路监控Jaeger
- 如何删除多个计算机名称,电脑双系统怎么删除一个呢?教你快速删除
- 生命探测仪能穿墙能探废墟 但不能穿透金属(图)
- Windows窗口消息大全,全不全自己看