`
ziyu_1
  • 浏览: 192505 次
  • 来自: ...
社区版块
存档分类
最新评论

android裁剪缩略图的方法

阅读更多
public static Bitmap corp(Bitmap bitmap) {
		
		int corpWith = Configs.CORP_THUMBS_WIDTH;
		int corpHeight = Configs.CORP_THUMBS_HEIGHT;
		int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        int srcLeft = 0;
        int srcTop = 0;
        int dstLeft = 0;
        int dstTop = 0;
        
		Bitmap output = Bitmap.createBitmap(corpWith,corpHeight, Config.ARGB_8888);
		Canvas canvas = new Canvas(output);
		
		if(corpWith >= width){
			dstLeft = (corpWith -width)/2;
			corpWith = width;
		}else{
			srcLeft = (width - corpWith)/2;
		}
        if(corpHeight >= height){
        	dstTop = (corpHeight - height)/2;
        	corpHeight = height;
        }else{
        	srcTop = (height - corpHeight)/2;
        }
        
        Log.i(Constants.LOG_TAG_DEBUG, "corpWith:" + corpWith + ",corpHeight:" + corpHeight + ",dstLeft:" + dstLeft + ",dstTop:"+dstTop);

		final int color = 0xff424242;
		final Paint paint = new Paint();
		final Rect dstRect = new Rect(dstLeft, dstTop, corpWith + dstLeft, corpHeight + dstTop);
		final Rect srcRect = new Rect(srcLeft, srcTop, corpWith + srcLeft, corpHeight + srcTop);
		final RectF rectF = new RectF(dstRect);
		final float roundPx = Configs.CORP_THUMBS_ROUND; //圆角像素

		paint.setAntiAlias(true);
		canvas.drawARGB(0, 0, 0, 0);
		paint.setColor(color);
		canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
		canvas.drawBitmap(bitmap, srcRect, dstRect, paint);

		return output;
	}



关于Rect 的详细解释如下
Rect dstRect = new Rect(dstLeft, dstTop, corpWith + dstLeft, corpHeight + dstTop);

这个构造方法需要四个参数这四个参数 指明了什么位置 ?我们就来解释怎么画 这个 矩形
这四个 参数 分别代表的意思是:left   top   right   bottom  上下左右呗。啊,不是 是 左 上 右 下。 下面给大家解释 
left : 矩形左边的X坐标  150        ---->图片中的A点
top:    矩形顶部的Y坐标   75         ---->图片中的B点
right :  矩形右边的X坐标   260       ----->图片中的C点
bottom: 矩形底部的Y坐标 120     ------->图片中的D点

说白了就是左上角的坐标是(150,75),右下角的坐标是(260,120),这样就好理解了
具体参考 http://byandby.iteye.com/blog/825330

分享到:
评论

相关推荐

    Android裁剪图片(裁剪为缩略图和大图两种形式)

    Android裁剪图片(裁剪为缩略图和大图两种形式)

    android相机拍照、裁剪缩略图源码

    测试可用,效果很好,android-调用系统相册和系统照相机功能实例。

    使用Android MediaStore裁剪大图片

    拍照传大图片,如果用普通方式会耗用极大的内存,Android一个App原则上的16M内存限制可以一下子被耗光。Android在拍照上有一个隐藏的设计,如果拍照图片过大,只返回一张缩略图。具体到不同手机,都是不一样的。

    Android 选择图片、上传图片之PictureSelector

    集成方式 ...build.gradle加入 allprojects {  repositories {  jcenter() ... } }   ...PictureSelector适配已经做的很好了...1.适配android6.0+系统 2.解决部分机型裁剪闪退问题 3.解决图片过大oom闪退问题 4.动态获取系统

    Android调用系统拍照裁剪图片模糊的解决方法

    在Android中,调用系统相机拍照时,将会接收到返回的图像数据,但是这些图片并不是全尺寸的图像,而是系统给的缩略图,当对拍照的图片进行裁切后显示时,得到的却是模糊的图片。下面针对这个问题提出解决的方法。 ...

    Android代码-transferee

    既有原图,又有缩略图,例如我司使用了阿里云的图片裁剪功能提供了缩略图来源,在列表页使用阿里云裁剪后的缩略图,优化列表数据流量和流畅度,同时又能在详情页或者图片查看器中显示大图。这种情况下也是 ...

    android的几个小应用程序

    -支援列表以及缩略图两种流览模式。 无线传书,使你的手机通过wifi网络与电脑相连,让你能够在电脑上管理你手机中的文件,向手机传送文件,或从手机中获取文件。 无线传书,是一条隐形的,虚拟的数据线。 无线传书...

    Android项目项目_CustomGalleryLikeiPhone(3D相册).rar

    - **多图浏览模式**:支持单张、多张并排以及缩略图预览等多种浏览模式,满足不同用户习惯。 - **完善的图片编辑功能**:用户可以对图片进行裁剪、旋转、添加滤镜等操作,满足个性化需求。 此项目为开发者提供了一...

    android kotlin语言 图片压缩工具类

    kotlin 图片压缩工具类 1.比例缩放图片 2.质量压缩 3.图片按比例大小压缩方法 4.把字节数组保存为一个文件 5. 旋转图片 6.设置缩略图 7.按宽/高缩放图片到指定大小并进行裁剪得到中间部分图片

    Chatting-App:使用Firebase聊天应用

    聊天应用 使用Firebase聊天应用 Firebase身份验证 ...将压缩图像显示为缩略图 参考: https : //github.com/zetbaitsu/Compressor 应用参考: https : //github.com/akshayejh/Lapit---Android-Firebase-Chat-App

    xUtils Android工具包-其他

    支持内存缓存,磁盘缓存(缩略图和原图),并且支持回收被view持有,但被MemCache移除的图片,减少页面回退时的闪烁。 支持在ListView滑动时,自动停止被回收复用的item对应的下载任务(再次下载时断点续传) 支持webp,...

    xUtils Android工具包 v3.9.0

    支持内存缓存,磁盘缓存(缩略图和原图),并且支持回收被view持有,但被MemCache移除的图片,减少页面回退时的闪烁。 支持在ListView滑动时,自动停止被回收复用的item对应的下载任务(再次下载时断点续传) 支持webp...

Global site tag (gtag.js) - Google Analytics