java 图片分割_Java atlas图集分割
java版本的图集分割
atlasFilePath : 图集配置文件
imageFilePath :图集文件
outPath :输出文件夹
图片读取
图片裁剪
图片存储
StringUtil.parseInt:
public static int parseInt(String str){
return parseInt(str, 0);
}
public static int parseInt(String str, int defaultValue){
try{
return Integer.parseInt(str);
}catch (Exception e) {}
return defaultValue;
}
package com.xxx.xxx.xxx;
import com.xxx.xxx.xxx.StringUtil;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Iterator;
/**
* atlas 图集文件分割
*/
public class AtlasImageSplite {
public static void main(String args[]) throws Exception{
String atlasFilePath = "/Users/xxx/xxx/xxxTexture.atlas";
String imageFilePath = "/Users/xxx/xxx/xxxTexture.png";
String outPath = "/Users/xxx/xxx/out/";
File outDir = new File(outPath);
if(!outDir.exists()){
outDir.mkdirs();
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(atlasFilePath)));
String line = null;
int count = 0;
String name = null;
int x = 0;
int y = 0;
int w = 0;
int h = 0;
while(null != (line = br.readLine())){
count++;
if(1 == count) continue;;
if(line.startsWith("size:")) continue;
if(line.startsWith("format:")) continue;
if(line.startsWith("filter:")) continue;
if(line.startsWith("repeat:")) continue;
if(line.startsWith(" index")){
System.out.println("处理" + name);
FileInputStream is = null;
ImageInputStream iis = null;
BufferedImage bi = ImageIO.read(new File(imageFilePath));//读取原始图片
System.out.printf("%s:%d,%d,%d,%d\n",name, x, y, w, h);
BufferedImage subImage = bi.getSubimage(x, y, w, h);
ImageIO.write(subImage, "png", new File(outDir + File.separator + name + ".png")); //保存新图片
continue;
}
if(line.startsWith(" xy:")){
line = line.replaceAll(" xy:","");
String par[] = line.split(",");
x = StringUtil.parseInt(par[0].trim());
y = StringUtil.parseInt(par[1].trim());
continue;
}
if(line.startsWith(" size:")){
line = line.replaceAll(" size:","");
String par[] = line.split(",");
w = StringUtil.parseInt(par[0].trim());
h = StringUtil.parseInt(par[1].trim());
continue;
}
if(line.startsWith(" ")) continue;
name = line.trim();
}
}
}
java 图片分割_Java atlas图集分割相关推荐
- java 图片水印_JAVA实现图片水印
一.JAVA图片水印实现原理 1.1.JAVA图片水印实现思路 1.创建缓存图片对象. 2.创建Java绘图工具对象. 3.使用绘图工具对象将原图绘制到缓存图片对象. 4.使用绘图工具将水印(文字/图 ...
- java 图片 缩略图_java 图片缩略图的两种方法
最近网上看到两种不同的java图片缩略图的绘制方案 第一种,使用Graphics().drawImage按照一定的比例重新绘制图像. package com.image.suoluetu; impor ...
- java图片拷贝_java图片拷贝
请选择上传的图片或文件: 可以看到,我们将...之后,我们就来编写这个 servlet--UpLoad.java 复制代码 代码如下: package load; import java.io.Fil ...
- java图片马赛克_java实现图片缩放、旋转和马赛克化
本文是作者结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化. 不多说,上代码: package deal; import java.awt.Color; import jav ...
- java split 特殊字符_Java中split()分割字符串时对特殊符号的处理
String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况.由于split()是用正则实现的分割,所以当遇到一些特殊字符时,就需要使用一些特殊处理.以下是对一些常 ...
- java图片序列化_Java中的强大武器——对象的序列化
原标题:Java中的强大武器--对象的序列化 所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象.这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象, ...
- java 图片动画_java在窗口中添加图片做动画,怎么一闪一闪的?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 视频来自:优酷 在java中添加图片做动画效果,怎么一闪一闪的运动啊?怎样才能让它不闪的连续运动呢? 下面是代码,代码项目project里有两个类,一个是 ...
- java 图片层级_Java Collection 和Map类层次结构图
欢迎指正! 坑爹的,图片一部分看不全,再上一张吧. 几点经验:摘自think in Java 4.Use an ArrayList if you're doing a lot of random ac ...
- java 图片阴影_Java如何为 PPT 中的图形添加阴影效果
在PowerPoint文档中,给图片添加阴影效果能增强图片的逼真度,使其贴近现实效果,提升文档的美观度. 本文将展示如何使用Free Spire.Presentation for Java为PPT中的 ...
最新文章
- 启动weblogic的错误:Could not obtain an exclusive lock to the embedded LDAP data files directory...
- 描述java源程序构成_2.1 Java程序的构成
- 二层网络和三层网络的区别
- lwip+freeRTOS 无法ping通的解决方案
- python如何为饼图添加标题_python – Matplotlib子图标题,图标题格式
- plist文件中iphone和ipad的应用图片设置
- 【java】照片查看器:开发一个简易照片查看器,自行设计功能和界面。
- Windows 配置libjpeg-turbo并在python中调用
- 小作业-drawline换成drawrectangle和fillRectangle
- 移动端meta设置大全(持续收集中。。。。)
- 2021年道路运输企业主要负责人模拟考试题库及道路运输企业主要负责人实操考试视频
- 软件测试实习生(月薪3k-5k)需要具备哪些技能才能找到工作?
- Vmware安装Ubuntu Kylin麒麟系统图文
- 密码算法测试向量——HMAC-SHA系列
- 记录一下环状RNA高通量测序数据分析pipeline
- tp管理界面找不到服务器,TP-LINK路由器无法登陆管理界面的解决办法
- C语言用if判断大小,学习C语言之用if语句比较三个数的大小[大全5篇]
- 032 Rust死灵书之Vec的IntoIter
- 设计一个镜面影射算法,将一个二叉树的每个节点的左,右子结点交换位置
- mac常见问题(六) Mac运行变慢是什么原因?怎么提高Mac运行速度
热门文章
- 阿里巴巴虾米的机器学习与深度学习进阶记
- 直播预告:GAN在网络特征学习中的应用 | PhD Talk #23
- AI 玩微信跳一跳的正确姿势:跳一跳 Auto-Jump 算法详解
- rust外服组建战队_[新手教程]模组服服务器指令大全(最新版)
- 如何使用postman访问若依后台权限功能
- java虚拟机加载类_java虚拟机之类加载机制(一)
- 电子工程可以报考二建_非工程类专业可以报考二建吗?哪些省份不限制报考专业?...
- A query was run and no Result Maps were found for the Mapped Statement....
- 呕心沥血为小白总结13个学习网站-错过了你注定绕弯!
- Spring相关API-getBean()方法的使用