传入图片,按比例缩放拼接图片
来源:互联网 发布:手机淘宝开店怎么激活 编辑:程序博客网 时间:2024/05/29 02:39
最近由于项目需求,需要传入一个图片,然后再将图片进行比例裁剪或者放大,然后实现拼接处1080*1920+1080*1920 => 2160*1920的图片的横竖状态的两种图片。
基本上需求就是这样。
下面是实现的代码:
private Bitmap splitJoinPic(Bitmap originBitmap) { if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { return splitJoinPicLandscape(originBitmap); } else { return splitJoinPicPortrait(originBitmap); } } private final int SCREEN_WIDTH_SINGLE_LANDSCAPE = 1920; private final int SCREEN_WIDTH_SINGLE_POTRAIT = 1080; private final int SCREEN_WIDTH_DUAL_LANDSCAPE = 2160; private final int SCREEN_WIDTH_DUAL_POTRAIT = 1920; private final int SCREEN_HEIGHT_SINGLE_LANDSCAPE = 1080; private final int SCREEN_HEIGHT_SINGLE_POTRAIT = 1920; private final int SCREEN_HEIGHT_DUAL_LANDSCAPE = 1920; private final int SCREEN_HEIGHT_DUAL_POTRAIT = 2160; private Bitmap splitJoinPicLandscape(Bitmap originBitmap) { Bitmap bitmapOriginal = clipWallpaper(originBitmap, SCREEN_WIDTH_SINGLE_POTRAIT, SCREEN_HEIGHT_SINGLE_POTRAIT); Bitmap combineBitmap = Bitmap.createBitmap(SCREEN_WIDTH_DUAL_LANDSCAPE, SCREEN_HEIGHT_DUAL_LANDSCAPE, Bitmap.Config.ARGB_4444); Canvas canvas = new Canvas(combineBitmap); Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.BLACK); canvas.drawBitmap(bitmapOriginal, 0, 0, null); canvas.drawRect(SCREEN_WIDTH_SINGLE_POTRAIT, 0, SCREEN_WIDTH_DUAL_LANDSCAPE, SCREEN_HEIGHT_DUAL_LANDSCAPE, paint); return combineBitmap; } private Bitmap splitJoinPicPortrait(Bitmap originBitmap) { Bitmap bitmapOriginal = clipWallpaper(originBitmap, SCREEN_WIDTH_SINGLE_LANDSCAPE, SCREEN_HEIGHT_SINGLE_LANDSCAPE); Bitmap combineBitmap = Bitmap.createBitmap(SCREEN_WIDTH_DUAL_POTRAIT, SCREEN_HEIGHT_DUAL_POTRAIT, Bitmap.Config.ARGB_4444); Canvas canvas = new Canvas(combineBitmap); Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.BLACK); canvas.drawBitmap(bitmapOriginal, 0, 0, null); canvas.drawRect(0, SCREEN_HEIGHT_SINGLE_LANDSCAPE, SCREEN_WIDTH_DUAL_POTRAIT, SCREEN_HEIGHT_DUAL_POTRAIT, paint); return combineBitmap; } private Bitmap clipWallpaper(Bitmap bitmap, int targetWidth, int targetHeight) { if (bitmap == null) { return null; } int bitmapWidth = bitmap.getWidth(); int bitmapHeight = bitmap.getHeight(); float scaleOfWidth = (float) targetWidth / (float) bitmapWidth; float scaleOfHeight = (float) targetHeight / (float) bitmapHeight; float scaleMax = scaleOfWidth > scaleOfHeight ? scaleOfWidth : scaleOfHeight; int scaleWidth = (int) (scaleMax * bitmapWidth); int scaleHeight = (int) (scaleMax * bitmapHeight); Bitmap tmpBitmap = Bitmap.createScaledBitmap(bitmap, scaleWidth, scaleHeight, false); Bitmap result = Bitmap.createBitmap(tmpBitmap, (int) ((scaleWidth - targetWidth) / 2f), (int) ((scaleHeight - targetHeight) / 2f), targetWidth, targetHeight); if (result != null) { if (bitmap != result) { bitmap.recycle(); } if (tmpBitmap != result) { tmpBitmap.recycle(); } } return result; }
阅读全文
0 0
- 传入图片,按比例缩放拼接图片
- 按比例缩放图片
- 图片按比例缩放
- 图片按比例缩放
- 按比例缩放图片
- 图片按比例缩放函数
- 按比例缩放图片
- 按比例缩放图片
- JS按比例缩放图片
- 按比例缩放图片
- js按比例缩放图片
- 图片按比例缩放
- PHP图片按比例缩放
- 按比例缩放图片
- imageView图片按比例缩放
- js按比例缩放图片
- 预览图片按比例缩放
- 图片按比例缩放
- c++xml文件
- centos7安装遇到的问题
- 多级 checkbox 父子类关联勾选
- 虚拟机中的CentOS联网
- oracle UUID生成
- 传入图片,按比例缩放拼接图片
- 简单的servlet实例,实现登录信息传送
- 电脑绘图软件有哪些可以简单使用的?
- 线程锁
- 【学习摘记】马士兵Tomcat
- Android RxJava 2.x入门例子详解(一)
- Windows 8系统安装SVN提示2502,2503错误
- 《Spring3实战》摘要(7)使用 Spring MVC 构建 Web 应用程序
- mysql 关于php mysql长连接、连接池的一些探索