【Android开发学习46】Android平台切割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.pngBitmap 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()){// 回收而且置为nullzero.recycle();zero = null;}}}// 分解 gui_blocks_2.pngBitmap 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()){// 回收而且置为nullzero.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()){// 回收而且置为nullzero.recycle();zero = null;}}}// 分解 gui_blocks_3.pngBitmap 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()){// 回收而且置为nullzero.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()){// 回收而且置为nullzero.recycle();zero = null;}}}// 分解 gui_blocks_4.pngBitmap 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()){// 回收而且置为nullzero.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()){// 回收而且置为nullzero.recycle();zero = null;}}}// items.pngBitmap 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()){// 回收而且置为nullzero.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()){// 回收而且置为nullzero.recycle();zero = null;}}}// items_3x.pngBitmap 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()){// 回收而且置为nullzero.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()){// 回收而且置为nullzero.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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 创建文件夹文件*/public static void createPath(String path) {File file = new File(path);if (!file.exists()) {file.mkdir();}}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

【Android开发学习46】Android平台切割PNG图片成小png图片的更多相关文章
- 吴裕雄--天生自然Android开发学习:android 背景相关与系统架构分析
1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了:最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google ...
- Android开发学习总结——Android开发的一些相关概念
一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 3G指的是第三代移 ...
- Android开发学习总结——Android开发的一些相关概念(转)
一.什么是3G.4G 1995年问世的第一代模拟制式手机(1G)只能进行语音通话. 1996到1997年出现的第二代GSM.CDMA等数字制式手机(2G)便增加了接收数据的功能 3G指的是第三代移 ...
- 吴裕雄--天生自然Android开发学习:Android studio 3.5安装详解
3. 建立AVD(安卓虚拟设备) 点击右上角AVD Manager图标,单击按钮Create Virtual Device,选择Nexus 5X,下一步,选择版本9.0,Download,然后Next ...
- 吴裕雄--天生自然Android开发学习:android开发知识学习思维导图
- Android开发学习总结(一)——搭建最新版本的Android开发环境
Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...
- Android开发学习之路--Android Studio cmake编译ffmpeg
最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...
- Android开发学习路线的七个阶段和步骤
Android开发学习路线的七个阶段和步骤 Android学习参考路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
随机推荐
- TObject、TPersisent 、TComponent、TControl、TGraphicControl、TWinControl 关系图
VCL的类图结构 TObject | TPersisent | ...
- Jdk 和 Tomcat的 安装。
1.再分发服务器上下载JDK,然后利用xftp上传到聚石塔等 2. 解压: tar -zxvf jdk-8u121-linux-x64.tar.gz 3.配置环境变量: export JAVA_HOM ...
- 使用jsplumb的一些笔记
欢迎就是需要使用jsplumb跟正在使用jsplumb的一起讨论 欢迎私聊 1.关于jsplumb的connection的一些事件 ####connection拖动的事件 instance.bind( ...
- SQL Server日期计算
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...
- bzoj 4034(DFS序+线段树)
这个题多了一个操作难度直线上升,看完题解才会写 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 ...
- day6 shelve模块
shelve模块 shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式,shelve模块是对pickle模块的补充.我们知道 ...
- 解决Python爬虫使用requests包控制台输出乱码问题
输出爬取的信息为乱码! 解决办法 爬取下来的编码是ISO-8859-1格式,需要转化为utf-8格式,加一句response.encoding = "utf8"
- LoadRunner对不同协议的选择
LoadRunner对不同协议的选择 大家常用的是Loadrunner测试web(Http/Html),但其实协议多种多样.在B/S结构的网站多种业务的特点需要选择不同的协议,协议如何选择呢,寻找了相 ...
- HTML5 Canvas游戏开发(三)lufylegend开源库件(上)
lufylegend可以解决HTML5开发游戏中会遇到的一些问题: 1.各种浏览器对于JavaScript和HTML的解析是不一致的. 2.手机浏览器和PC浏览器的区别. 3.JavaScript并非 ...
- linux下文件转码
一.工具介绍 enca是一个很好用的文件转码工具,使用命令 sudo apt-get install enca 即可安装 二.基本用法 1.查看文件编码 $ enca filename 2.文件转码 ...