赞
踩
直接上代码吧:你们要用的话可以按照想法改
- package com.demo.util;
-
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Matrix;
- import android.os.Environment;
- import android.util.Log;
-
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
-
- public class ImageProcessingUtils {
-
- // 将图片分割并拉伸到指定尺寸并保存到本地
- public static void splitAndSaveImage(String imagePath, int splitCount, int targetWidth, int targetHeight) {
- // 1. 读取原始图片
- Log.e("TAG", "imagePath=======" + imagePath);
- Bitmap originalBitmap = BitmapFactory.decodeFile(imagePath);
- try {
- int originalWidth = originalBitmap.getWidth();
- int originalHeight = originalBitmap.getHeight();
- Log.e("TAG", "originalWidth=======" + originalWidth);
- Log.e("TAG", "originalHeight=======" + originalHeight);
- // 2. 计算分割后每部分图片的宽度和高度
- int splitWidth = originalWidth / splitCount;
- int splitHeight = originalHeight - 1;
- Log.e("TAG", "splitWidth=======" + splitWidth);
- Log.e("TAG", "splitHeight=======" + splitHeight);
- // 3. 创建输出目录(如果不存在)
- File outputDirectory = new File(Environment.getExternalStorageDirectory() + "/split_images");
- if (!outputDirectory.exists()) {
- outputDirectory.mkdirs();
- }
-
- // 4. 分割并拉伸图片,并保存到本地
- for (int col = 0; col < splitCount; col++) {
- Log.e("TAG", "col=======" + col);
- int startX = col * splitWidth;
- int startY = 0;
- Log.e("TAG", "startX=======" + startX);
- Log.e("TAG", "startY=======" + startY);
- // 获取分割区域的图像
- Bitmap splitBitmap = Bitmap.createBitmap(originalBitmap, startX, startY,
- splitWidth, splitHeight);
-
- // 拉伸图像尺寸
- //Bitmap resizedBitmap = Bitmap.createScaledBitmap(splitBitmap,
- // targetWidth, targetHeight, true);
-
-
- // // 旋转图像
- // Matrix matrix = new Matrix();
- // matrix.postRotate(90);
- // Bitmap rotatedBitmap = Bitmap.createBitmap(splitBitmap, 0, 0,
- // splitWidth, splitHeight, matrix, true);
- //
- // 构建输出文件路径
- String outputFilePath = outputDirectory.getAbsolutePath() + "/split_image_" + col + ".png";
-
- Log.e("TAG", "outputFilePath=======" + outputFilePath);
- // 保存图像到本地
- saveImage(splitBitmap, outputFilePath);
- }
- }catch (Exception c){
- Log.e("TAG", "c=======" + c.getMessage());
- }
-
- }
-
- // 保存图片到本地
- private static void saveImage(Bitmap bitmap, String filePath) {
- try {
- FileOutputStream out = new FileOutputStream(filePath);
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
- out.flush();
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
调用方式:ImageProcessingUtils.splitAndSaveImage(sourcePath,3,width,height);
sourcePath:原始图像地址3:平均分成三份
width,height:想要拉伸的尺寸
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。