Android中将一个图片切割成多个图片[转]

有种场景,我们想将一个图片切割成多个图片。比如我们在开发一个拼图的游戏,就首先要对图片进行切割。

以下是封装好的两个类,可以实现图片的切割。仅供参考和学习。

一个是ImagePiece类,此类保存了一个Bitmap对象和一个标识图片的顺序索引的int变量。

Java代码  收藏代码
  1. package arui319.blog.csdn.net;    
  2.     
  3. import android.graphics.Bitmap;    
  4.     
  5. public class ImagePiece {    
  6.     
  7.     public int index = 0;    
  8.         
  9.     public Bitmap bitmap = null;    
  10. }    

 
一个是ImageSplitter类,有一个静态方法split,传入的参数是要切割的Bitmap对象,和横向和竖向的切割片数。比如传入的是3、3,则横竖向都切割成3片,最终会将整个图片切割成3X3=9片。

Java代码  收藏代码
  1. package arui319.blog.csdn.net;    
  2.     
  3. import java.util.ArrayList;    
  4. import java.util.List;    
  5.     
  6. import android.graphics.Bitmap;    
  7.     
  8. public class ImageSplitter {    
  9.     
  10.     public static List<ImagePiece> split(Bitmap bitmap, int xPiece, int yPiece) {    
  11.     
  12.         List<ImagePiece> pieces = new ArrayList<ImagePiece>(xPiece * yPiece);    
  13.         int width = bitmap.getWidth();    
  14.         int height = bitmap.getHeight();    
  15.         int pieceWidth = width / 3;    
  16.         int pieceHeight = height / 3;    
  17.         for (int i = 0; i < yPiece; i++) {    
  18.             for (int j = 0; j < xPiece; j++) {    
  19.                 ImagePiece piece = new ImagePiece();    
  20.                 piece.index = j + i * xPiece;    
  21.                 int xValue = j * pieceWidth;    
  22.                 int yValue = i * pieceHeight;    
  23.                 piece.bitmap = Bitmap.createBitmap(bitmap, xValue, yValue,    
  24.                         pieceWidth, pieceHeight);    
  25.                 pieces.add(piece);    
  26.             }    
  27.         }    
  28.     
  29.         return pieces;    
  30.     }    
  31.     
  32. }    

 
这里的切割,主要使用的是Bitmap对象的createBitmap方法,不再做具体描述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并行开发 —— 第六篇 异步编程模型

在.net里面异步编程模型由来已久&#xff0c;相信大家也知道Begin/End异步模式和事件异步模式&#xff0c;在task出现以后&#xff0c;这些东西都可以被task包装 起来&#xff0c;可能有人会问&#xff0c;这样做有什么好处&#xff0c;下面一一道来。 一&#xff1a; Begin/En…

C++相关

初始化列表中的初始化顺序1 class Printer{2 public:3 Printer(string name){cout<<name;}4 };5 class Container{6 public:7 Container():b("b"),a("a"){}8 Printer a;9 Printer b; 10 }; 11 12 int main…

Java中的Unsafe在安全领域的一些应用总结和复现

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 0 前言 1 基本使用 1.1 内存级别修改值1.2 创建对象1.3 创建VM Anonymous Class 2 利用姿势 2.1 修改值以关闭RASP等…

Spring Boot中使用Swagger2构建强大的RESTful API文档

由于Spring Boot能够快速开发、便捷部署等特性&#xff0c;相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因&#xff0c;这些终端会共用很多底层业务逻辑&#xff0c;因此我们会抽象出这样一层来同时服务于多个…

关于公司没有公网IP也没有动态IP,如何远程办公呢?

2019独角兽企业重金招聘Python工程师标准>>> 迫于公司网络环境特殊&#xff0c;没有公网IP地址&#xff0c;也没有动态IP地址&#xff0c;其实就是园区分了一根内网固定IP的网线过来&#xff0c;这两天正巧有同事要外出办公&#xff0c;问题来了&#xff0c;开发环境…

ST_LINK/V2 SWIM和SWD、JTAG下载口说明

LED状态说明 闪烁红色&#xff1a;ST-LINK/V2连接到计算机后&#xff0c;第一次USB枚举过程红色&#xff1a;ST-LINK/V2与计算机已建立连接闪烁绿色/红色&#xff1a;目标板和计算机在进行数据交换绿色&#xff1a;通讯完成橙色&#xff08;红色绿色&#xff09;&#xff1a;通…

Gerrit的用法及与gitlab的区别

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 来到一个新的团队&#xff0c;开发的代码被同事覆盖了。找同事核实&#xff0c;同事却说根本没有看到我的代码。经过一番沟通…

The 15th UESTC Programming Contest Preliminary H - Hesty Str1ng cdoj1551

地址&#xff1a;http://acm.uestc.edu.cn/#/problem/show/1551 题目&#xff1a; Hesty Str1ng Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) A chrysanthemum was painted on the second page, and we tried to use the magic pow…

easyui 点滴记录

为什么80%的码农都做不了架构师&#xff1f;>>> 【1.安装】&#xff1a;pip install easygui 【2.常用】 integerbox 交互式输入数字textbox 交互式输入文本ccbox 确认判断boolbox 是否判断multchoicebox 多选条目choicebox 单选条目buttonbox 单选按钮【3.体验一…

IAR切BANK--BANK说明

一、为什么要用到BANK&#xff1f; C51单片机的最大寻址范围为2^1664K&#xff0c;为了突破64K代码的限制&#xff0c;就需要采用C51的切BANK。 二、切BANK的原理 代码地址空间的上半部 ,以重叠BANK0的物理地址空间 , 硬件设计了 n个存储 器页面来存储程序代码 。在任一时刻 …

hdu 4293 Groups DP

http://acm.hdu.edu.cn/showproblem.php?pid4293 题意&#xff1a; 有n个人分成了若干组走在一条林荫道路上&#xff0c;导游为了能够确定人数&#xff0c;要求每个人喊出自己所在的队伍前边有多少人Ai表示,后边有多少人Bi表示&#xff0c;于是我们得到了n条信息。这里面有错误…

IAR切BANK--命令连接器文件xcl格式说明

IAREWARM中段后缀含义 后缀 段类型 含义 AC CONST 绝对地址定位常数 AN DATA 用关键字__no_init声明的绝对地址定位数据 C CONST 常数 I DATA 初始化值为非0的数据 ID CONST 上述数据的初始式 N DATA 未初始化的数据 Z DATA 初始化值为0的数据 ROM用于…

DBA_Oracle Table Partition表分区概念汇总(概念)

2014-06-20 Created By BaoXinjian 一、摘要 有关表分区的一些维护性操作&#xff1a; 注&#xff1a;分区根据具体情况选择。 表分区有以下优点&#xff1a; 1、数据查询&#xff1a;数据被存储到多个文件上&#xff0c;减少了I/O负载&#xff0c;查询速度提高。 2、数据修剪&…

electron打包vue项目

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 创建项目 点击这里 添加electron-builder 1、在项目目录下运行命令&#xff1a;vue add electron-builder 2、electron-…

Hdu 4293 DP

题意&#xff1a; n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路&#xff1a; 如果已经知道了其中一组的人数~ 就往前找..找在这一组之前与这一组的话不矛盾的最多人数 Ti…

IAR切BANK--程序中的使用

一、在IAR的集成开发环境中实现数据变量定位方法如下三种 1、__no_init char alpha 0x0200; 2、#pragma location 0x0202 const int beta; 3、const int gamma 0x0204 3; 或&#xff1a; 1&#xff09;__no_init int alpha "MYSEGMENT"; //MYSEGMENT段可在…

CSS/CSS3语法新特性笔记

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 CSS层叠样式表 三大特性 层叠性&#xff1a;相同的样式会覆盖 继承性&#xff1a;属性可向下继承 优先级&#xff1a;范…

C# winform 自定义皮肤制作

最近要做个软件正在做技术准备&#xff0c;由于WINFORM生成的窗体很丑陋&#xff0c;一个好的软件除了功能性很重要外&#xff0c;UI的体验也是不容忽视的。习惯性的在网上搜素了下&#xff0c;换肤控件也有好几款&#xff0c;但是有些用起来不是很好用&#xff0c;好点的也要花…

蓝牙PROFILE

Bluetooth的一个很重要特性&#xff0c;就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范。为了更容易的保持Bluetooth设备之间的兼容&#xff0c;Bluetooth规范中定义了Profile。Profile定义了设备如何实现一种连接或者应用&#xff0c;你可以把Profile理解为连接层或者…

netty系列之:EventLoop,EventLoopGroup和netty的默认实现

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 简介 EventLoopGroup和EventLoopEventLoopGroup在netty中的默认实现EventLoop在netty中的默认实现总结 简介 在net…