zoukankan      html  css  js  c++  java
  • 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方法,不再做具体描述。

  • 相关阅读:
    withDefaultPasswordEncoder() 过时弃用问题
    @Value不能给静态变量直接赋值问题
    java编程思想之垃圾收集
    阅读java编程思想之一切都是对象
    阅读java编程思想的总结(一)
    Idea连接服务器docker并部署代码到docker实现一键启动
    后端设置Cookie前端跨域获取丢失问题(基于springboot实现)
    win10安装docker并结合Idea2018.1部署springboot项目
    Idea用maven给springboot打jar包
    css纯数字或字母换行
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/4086778.html
Copyright © 2011-2022 走看看