java 图片分割_Java atlas图集分割

该博客介绍了一个Java程序,用于将图集文件(Atlas)进行分割。程序读取图集配置文件和图集图片,通过解析配置信息,裁剪并保存各个子图像。关键步骤包括图片读取、裁剪、存储以及使用自定义的StringUtil parseInt方法处理数值解析。
摘要由CSDN通过智能技术生成

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();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值