Android中将一个图片切割成多个图片

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

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

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

 1 package com.example.imagesplitter;
 2
 3 import android.graphics.Bitmap;
 4
 5 /**
 6  * 图片切割实体类
 7  */
 8 public class ImagePiece {
 9     public int index = 0;
10     public Bitmap bitmap = null;
11 }

一个是ImageSplitter类,有一个静态方法split,传入的参数是要切割的Bitmap对象,和横向和竖向的切割片数

 1 package com.example.imagesplitter;
 2
 3 import java.util.ArrayList;
 4 import java.util.List;
 5
 6 import android.graphics.Bitmap;
 7
 8 /**
 9  * 图片切割工具类
10  */
11 public class ImageSplitter {
12
13     /**
14      * 图片切割
15      * @param bitmap 导入图片
16      * @param x x轴切割
17      * @param y y轴切割
18      * @return
19      */
20     public static List<ImagePiece> split(Bitmap bitmap, int x, int y) {
21         List<ImagePiece> pieces = new ArrayList<ImagePiece>();
22         int width = bitmap.getWidth();
23         int height = bitmap.getHeight();
24         int pieceWidth = width / x;
25         int pieceHeight = height / y;
26         for (int i = 0; i < y; i++) {
27             for (int j = 0; j < x; j++) {
28                 ImagePiece image = new ImagePiece();
29                 image.index = j + i * x;
30                 int xValue = j * pieceWidth;
31                 int yValue = i * pieceHeight;
32                 image.bitmap = Bitmap.createBitmap(bitmap, xValue, yValue,
33                         pieceWidth, pieceHeight);
34                 pieces.add(image);
35             }
36         }
37         return pieces;
38     }
39 }

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

原文地址:https://www.cnblogs.com/MrChen-/p/10310422.html

时间: 2024-11-13 08:21:02

Android中将一个图片切割成多个图片的相关文章

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

有种场景,我们想将一个图片切割成多个图片.比如我们在开发一个拼图的游戏,就首先要对图片进行切割. 以下是封装好的两个类,可以实现图片的切割.仅供参考和学习. 一个是ImagePiece类,此类保存了一个Bitmap对象和一个标识图片的顺序索引的int变量. Java代码   package arui319.blog.csdn.net; import android.graphics.Bitmap; public class ImagePiece { public int index = 0; p

Petrozavodsk Winter-2013. Ural FU Contest Problem D. Five Palindromes manacher、一个串切割成5个回文子串、优化

Ural Federal University Contest, SKB Kontur Cup Petrozavodsk Winter Training Camp, Saturday, February 2, 2013 Problem D. Five Palindromes Input file: input.txt Output file: output.txt Time limit: 2 seconds (3 seconds for Java) Memory limit: 256 mebib

如何将.jpg图片 转换成.eps 格式图片

在使用latex写作论文的时候,需要插入一些图片,但是往往有些图片不是eps格式的.虽然网上有如何插入jpg格式的图片方法,但是经过我实验后发现都不太管用.最后找到一个比较靠谱的方法,使用latx本身的图片转换功能.具体方法如下: 可以从MiKTex的目录下找到bmeps的应用文件.在我的电脑里路径是D:\ProText\MiKTeX\texmf\miktex\bin,是latex自己的bitmap to eps converter. 在DOS下,进入.jpg图片所在目录, 用语句bmeps 1

Android中将布局文件转成bitmap

在实践中发现,有些需要打印的小票高度小于屏幕的高度,而有些小票内容过多高度高于屏幕高度. 小于屏幕高度的布局文件转成bitmap较为容易,高于屏幕高度的布局文件转成长图bitmap较为复杂. 一.小于屏幕高度的布局文件转成bitmap 1.需求 在交易过程中常常需要打印小票,利用布局文件组织小票格式,并将其转成bitmap之后打印出来较为方便. 2.布局文件转bitmap public class ReceiptViewActivity extends Activity{ private Vie

ios 将矩形图片裁剪成圆形图片

在ios中将一个正方形的图片裁剪成圆形的图片是一件非常容易的事情, 直接设置 imageView.layer.cornerRadius 这个属性, 再设置 imageView.clipsToBounds = YES 就可以了, 但是对于长方形的图片来说这个方式裁剪出来的就不是一个圆形的了, 而是个椭圆的. 解决这个问题就需要自己画 并且需要计算. 最终效果图如下: tips: 如果是裁剪矩形的话, 是从图片中心的位置为圆心剪裁的. 代码如下: @implementation UIImage (C

图片切割

原理:计算指定范围外的像素,然后把像素点的alpha设置为0 (每个像素点都有 RGBA 四个属性值),复杂的是计算出哪些点需要被裁剪(复杂图形裁剪)如图: 左下角为UV原点,最大值为右上角(1,1)点(所以长方形切割的计算会复杂一点),当纹理uv在 1 区域的时候,也就是满足uv.x < r && uv.y < r,r值为切割的中心点. 例如正方形图片切割成菱形:0.5为上面的r,可自定义 fixed4 frag (v2f i) : COLOR { float2 uv = i

Android 将图片平均切割成多张小片

public class ImageSplitter { /** * 将图片切成 , piece *piece * * @param bitmap * @param piece * @return */ public static List<ImagePiece> split(Bitmap bitmap, int piece) { List<ImagePiece> pieces = new ArrayList<ImagePiece>(piece * piece); in

android 将图片转换成黑白图片

先调用android的系统工具,获取图片生成bitmap文件,再使用android中的二值化技术,将图片转化成黑白图片,主界面代码: package com.example.blackwhite; import java.io.IOException; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore;

java实现把一个大文件切割成N个固定大小的文件

//java实现把一个大文件切割成N个固定大小的文件 package com.johnny.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; public class FenGeFile { p