需求,形成1天每个小时的画像,并合成一个图片。
思路:每个小时抽取一张图片,再把这种图片截取1/24并存放,后面,再把这24张图片合成一张图片。
准备一张原图
截图前:
截图后:(下午14点的截图)
-
package com.qihui.qxj.utils;
-
-
import java.awt.Rectangle;
-
import java.awt.image.BufferedImage;
-
import java.io.*;
-
import java.util.Iterator;
-
import javax.imageio.ImageIO;
-
import javax.imageio.ImageReadParam;
-
import javax.imageio.ImageReader;
-
import javax.imageio.stream.ImageInputStream;
-
-
public
class ImageUtils {
-
public static void cutJPG(InputStream input, OutputStream out, int x,
-
int y,
int width,
int height)
throws IOException {
-
ImageInputStream imageStream =
null;
-
try {
-
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(
"jpg");
-
ImageReader reader = readers.next();
-
imageStream = ImageIO.createImageInputStream(input);
-
reader.setInput(imageStream,
true);
-
ImageReadParam param = reader.getDefaultReadParam();
-
-
System.out.println(reader.getWidth(
0));
-
System.out.println(reader.getHeight(
0));
-
Rectangle rect =
new Rectangle(x, y, width, height);
-
param.setSourceRegion(rect);
-
BufferedImage bi = reader.read(
0, param);
-
ImageIO.write(bi,
"jpg", out);
-
}
finally {
-
imageStream.close();
-
}
-
}
-
-
-
public static void cutPNG(InputStream input, OutputStream out, int x,
-
int y,
int width,
int height)
throws IOException {
-
ImageInputStream imageStream =
null;
-
try {
-
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(
"png");
-
ImageReader reader = readers.next();
-
imageStream = ImageIO.createImageInputStream(input);
-
reader.setInput(imageStream,
true);
-
ImageReadParam param = reader.getDefaultReadParam();
-
-
System.out.println(reader.getWidth(
0));
-
System.out.println(reader.getHeight(
0));
-
-
Rectangle rect =
new Rectangle(x, y, width, height);
-
param.setSourceRegion(rect);
-
BufferedImage bi = reader.read(
0, param);
-
ImageIO.write(bi,
"png", out);
-
}
finally {
-
imageStream.close();
-
}
-
}
-
-
public static void cutImage(InputStream input, OutputStream out, String type,int x,
-
int y,
int width,
int height)
throws IOException {
-
ImageInputStream imageStream =
null;
-
try {
-
String imageType=(
null==type||
"".equals(type))?
"jpg":type;
-
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(imageType);
-
ImageReader reader = readers.next();
-
imageStream = ImageIO.createImageInputStream(input);
-
reader.setInput(imageStream,
true);
-
ImageReadParam param = reader.getDefaultReadParam();
-
Rectangle rect =
new Rectangle(x, y, width, height);
-
param.setSourceRegion(rect);
-
BufferedImage bi = reader.read(
0, param);
-
ImageIO.write(bi, imageType, out);
-
}
finally {
-
imageStream.close();
-
}
-
}
-
-
-
public static void main(String[] args) throws Exception {
-
String imgName =
"D:\\test.jpg";
-
BufferedImage sourceImg = ImageIO.read(
new FileInputStream(imgName));
-
//获取原始图片的宽高
-
int height = sourceImg.getHeight();
-
int width = sourceImg.getWidth();
-
sourceImg.flush();
-
int x = (width /
24) * (
14);
-
int y =
0;
-
ImageUtils.cutJPG(
new FileInputStream(imgName),
-
new FileOutputStream(
"D:\\test123.jpg"), x,y,width,height);
-
-
/* ImageUtils.cutPNG(new FileInputStream("c:\\1.png"),
-
new FileOutputStream("c:\\test3.png"), 0,0,50,40); */
-
}
-
}
本文章暂时只实现图片的截取,把一张图片切割成24份,取对应小时对应在原图的宽高。如何把24张图片合成一张图片。且看下下文。
如果你热衷技术,喜欢交流,欢迎加入我们!
欢迎关注公众号“程序猿学社”
1.免费领取各种学习视频,学习相关java各个技术点面试知识
2.有相关学习疑问或者面试困惑,也可以通过公众号私信博主
3.通过公众号进入java交流群,不闲聊,只谈技术
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use>
</svg><span class="name">点赞</span>
<span class="count">1</span>
</a></li>
<li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-Collection-G"></use>
</svg><span class="name">收藏</span></a></li>
<li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-fenxiang"></use>
</svg>分享</a></li>
<!--打赏开始-->
<!--打赏结束-->
<li class="tool-item tool-more">
<a>
<svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
</a>
<ul class="more-box">
<li class="item"><a class="article-report">文章举报</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="person-messagebox">
<div class="left-message"><a href="https://blog.csdn.net/qq_16855077">
<img src="https://profile.csdnimg.cn/C/0/3/3_qq_16855077" class="avatar_pic" username="qq_16855077">
<img src="https://g.csdnimg.cn/static/user-reg-year/1x/6.png" class="user-years">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit"><a href="https://blog.csdn.net/qq_16855077" data-report-click="{"mod":"popu_379"}" target="_blank">程序猿学社</a></span>
</div>
<div class="text"><span>发布了277 篇原创文章</span> · <span>获赞 514</span> · <span>访问量 21万+</span></div>
</div>
<div class="right-message">
<a href="https://im.csdn.net/im/main.html?userName=qq_16855077" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
</a>
<a class="btn btn-sm attented bt-button personal-watch" data-report-click="{"mod":"popu_379"}">已关注</a>
</div>
</div>
</div>
转载自:https://blog.csdn.net/qq_16855077/article/details/90378173