功能描写叙述:
分解 assets 文件夹文件下的 PNG 图片成 各个小尺寸 PNG 图片 。


主函数运行:

// 创建文件夹, 用来保存分解出来的图片
createPath("/sdcard/gui_blocks/");
createPath("/sdcard/gui_blocks_2/");
createPath("/sdcard/gui_blocks_3/");
createPath("/sdcard/gui_blocks_4/");
createPath("/sdcard/items/");
createPath("/sdcard/items_3x/");
// 分解 gui_blocks.png
Bitmap resource = getImageFromAssetsFile("gui_blocks.png");
System.out.println("DTPrint first System.out.println"+resource);
Log.d("TAG", "DTPrint first tag"+resource);
int i = 0;
int j = 0;
String pic_Name=null;
for( i=0; i<10; i++)
{
for( j=0; j<10; j++)
{
Bitmap zero = Bitmap.createBitmap(resource, i*48, j*48, 48, 48);
pic_Name=String.format("gui_blocks/%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
// 分解 gui_blocks_2.png
Bitmap resource_gui_blocks_2 = getImageFromAssetsFile("gui_blocks_2.png");
i = 0;
j = 0;
for( i=0; i<10; i++)
{
for( j=0; j<7; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_gui_blocks_2, i*48, j*48, 48, 48);
pic_Name=String.format("gui_blocks_2/big_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
for( i=0; i<32; i++)
{
for( j=0; j<3; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_gui_blocks_2, i*16, 384+j*16, 16, 16);
pic_Name=String.format("gui_blocks_2/small_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
// 分解 gui_blocks_3.png
Bitmap resource_gui_blocks_3 = getImageFromAssetsFile("gui_blocks_3.png");
i = 0;
j = 0;
for( i=0; i<10; i++)
{
for( j=0; j<7; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_gui_blocks_3, i*48, j*48, 48, 48);
pic_Name=String.format("gui_blocks_3/big_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
for( i=0; i<32; i++)
{
for( j=0; j<3; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_gui_blocks_3, i*16, 384+j*16, 16, 16);
pic_Name=String.format("gui_blocks_3/small_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
// 分解 gui_blocks_4.png
Bitmap resource_gui_blocks_4 = getImageFromAssetsFile("gui_blocks_4.png");
i = 0;
j = 0;
for( i=0; i<10; i++)
{
for( j=0; j<9; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_gui_blocks_4, i*48, j*48, 48, 48);
pic_Name=String.format("gui_blocks_4/big_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
for( i=0; i<32; i++)
{
for( j=0; j<4; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_gui_blocks_4, i*16, 432+j*16, 16, 16);
pic_Name=String.format("gui_blocks_4/small_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
// items.png
Bitmap resource_items = getImageFromAssetsFile("items.png");
i = 0;
j = 0;
for( i=0; i<16; i++)
{
for( j=0; j<12; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_items, i*16, j*16, 16, 16);
pic_Name=String.format("items/big_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
for( i=0; i<16; i++)
{
//for( j=0; j<4; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_items, i*16, 240, 16, 14);
pic_Name=String.format("items/small_%d.0.png", i);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
// items_3x.png
Bitmap resource_items_3x = getImageFromAssetsFile("items_3x.png");
i = 0;
j = 0;
for( i=0; i<16; i++)
{
for( j=0; j<12; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_items_3x, i*16, j*16, 16, 16);
pic_Name=String.format("items_3x/big_%d.%d.png", i, j);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}
for( i=0; i<16; i++)
{
//for( j=0; j<4; j++)
{
Bitmap zero = Bitmap.createBitmap(resource_items, i*16, 240, 16, 14);
pic_Name=String.format("items_3x/small_%d.0.png", i);
saveBitmap(zero, pic_Name);
// 先推断是否已经回收
if(zero != null && !zero.isRecycled()){
// 回收而且置为null
zero.recycle();
zero = null;
}
}
}

支持函数:
/**
* 从Assets中读取图片
*/
private Bitmap getImageFromAssetsFile(String fileName)
{
Bitmap image = null;
AssetManager am = getResources().getAssets();
try
{
InputStream is = am.open(fileName);
image = BitmapFactory.decodeStream(is);
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return image;
}
/** 保存方法 */
public void saveBitmap(Bitmap bm, String picName) {
Log.e("TAG", "保存图片");
File f = new File("/sdcard/", picName);
if (f.exists()) {
f.delete();
}
try {
FileOutputStream out = new FileOutputStream(f);
bm.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
Log.i("TAG", "已经保存");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 创建文件夹文件
*/
public static void createPath(String path) {
File file = new File(path);
if (!file.exists()) {
file.mkdir();
}
}

在 AndroidManifest.xml 文件里加入权限支持:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

转化后的图片效果:










【Android开发学习46】Android平台切割PNG图片成小png图片的更多相关文章

  1. 吴裕雄--天生自然Android开发学习:android 背景相关与系统架构分析

    1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了:最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google ...

  2. Android开发学习总结——Android开发的一些相关概念

    一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 Ÿ 3G指的是第三代移 ...

  3. Android开发学习总结——Android开发的一些相关概念(转)

    一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 Ÿ 3G指的是第三代移 ...

  4. 吴裕雄--天生自然Android开发学习:Android studio 3.5安装详解

    3. 建立AVD(安卓虚拟设备) 点击右上角AVD Manager图标,单击按钮Create Virtual Device,选择Nexus 5X,下一步,选择版本9.0,Download,然后Next ...

  5. 吴裕雄--天生自然Android开发学习:android开发知识学习思维导图

  6. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  7. Android开发学习之路--Android Studio cmake编译ffmpeg

      最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...

  8. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  9. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

随机推荐

  1. Oracle学习笔记:实现select top N的方法

    由于Oracle不支持select top N语句,所以在Oracle中需要利用order by和rownum的组合来实现select top N的查询. rownum是记录表中数据编号的一个隐藏字段 ...

  2. 树莓派GPIO控制RGB彩色LED灯

    树莓派GPIO通过PWM来控制RGB彩色LED灯,可以显示任何我们想要的颜色. RGB模块简介 这个RGB彩色LED里其实有3个灯,分别是红灯.绿灯和蓝灯.控制这三个灯分别发出不同强度的光,混合起来就 ...

  3. JavaScript闭包与变量的经典问题

    许多人第一次接触闭包大概都是从高程里这段代码开始的: function createFunctions() { var result = new Array(); for(var i=0; i< ...

  4. Android Activity、Service、BroadcastReceiver 的生命周期

    Activity.Service.BroadcastReceiver这三个组建是Android开发中最常使用到的组件,在它们的生命周期的各个阶段我们需要针对性的做些事情,了解这些组件的生命周期有利于我 ...

  5. jenkins备份与恢复

    jenkins这里我通过thinbackup插件进行对jenkins的配置备份与恢复 1丶安装thinbackup插件 2丶系统管理选择thinbackup插件 3丶创建备份目录 mkdir /bac ...

  6. mysql关联表插入-php环境中

    $insertsql=<<<EOTinsert into tb_manager values(null,'$name','$pwd','1');select @pid:=last_i ...

  7. Mysql Window 下安装

    http://blog.csdn.net/u013235478/article/details/50623693

  8. [python selenium] 操作方法整理

    个人笔记,摘抄自虫师python selenum,仅供个人参考 1.安装: pip install selenium 下载webdriver # webdriver 下载并放置在python主目录 · ...

  9. Think PHP 3.2 界面及JS多语言实现

    1.多语言实现的原理在实现多语言的时候需要调用L()函数.那么L函数是如何实现多语言的输出呢?在L函数内部有一个静态变量$_lang一维数组.所有的语言数据都存在在这个数组中.系统在加载的时候根据选择 ...

  10. vue 父子间组件传值

    1.父组件向子组件传值: 实例截图: 实例代码: /*子组件代码*/ //child.vue <template> <div style="border: 1px soli ...