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

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相机API的基本概念。Android...

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

    本文将深入探讨如何在Android中实现图片裁剪功能,包括裁剪为缩略图和大图两种形式。 首先,我们需要了解Android中的Bitmap类,它是Android图形库中的核心类,用于表示和操作位图。在裁剪图片时,我们通常会用到...

    Android中一个关于图片上传和缩略图查看的Demo

    2. 缩略图的生成可以通过Bitmap.createScaledBitmap方法实现,根据需要的大小比例来裁剪或缩放原图。 3. 考虑到性能优化,通常会先加载较小的缩略图,然后在用户需要时再加载原图,这种策略被称为懒加载。 4. 在...

    图片缩略图展开

    缩略图通常是通过降低图像分辨率、裁剪部分区域或者对原始图像进行下采样来生成的。 图片放大展开,顾名思义,就是将缩略图恢复成其原始大小的过程。这个过程可能涉及到图像插值,因为缩略图的像素数量通常远小于...

    录制视频生成缩略图

    - 压缩包中的“Android例子源码录制视频并生成缩略图的简单例子”可能包含以下关键代码片段: - 初始化`MediaRecorder`和`MediaMetadataRetriever` - 视频录制逻辑 - 使用`getFrameAtTime()`生成缩略图 - 可能...

    安卓获取视频缩略图

    本篇文章将深入探讨如何在Android系统中获取本地视频的缩略图,并且展示如何利用列表视图(ListView)或者网格视图(GridView)来显示这些缩略图。 首先,我们需要了解Android提供了一个名为`...

    使用Android MediaStore裁剪大图片

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

    Android 实现图片生成卷角和圆角缩略图的方法

    在Android开发中,创建图片的缩略图是常见的需求,而将图片处理成带有特殊效果的缩略图,如卷角和圆角,可以提升应用的视觉体验。本文将详细介绍如何在Android中实现这两种效果。 首先,我们来看如何生成带圆角的...

    Android自定义选择相册图片并带自定义裁剪、旋转

    - 如果需要自定义相册UI,可以创建一个全新的Activity或Fragment,利用GridView或RecyclerView展示图片缩略图。每个item需要绑定一个ImageView,通常使用 Glide 或 Picasso 这样的库来加载和显示图片,以优化性能。...

    Android裁剪图片为圆形图片Demo

    对于大图,可以考虑使用低分辨率的缩略图,或者在需要时才加载和显示全分辨率的图片。 - 使用`RecyclingBitmapDrawable`或类似机制来回收不再使用的Bitmap,防止内存泄漏。 6. **使用示例项目** - 提供的"Android...

    android图片裁剪上传头像

    它们提供了丰富的功能,如缩放、旋转以及缩略图显示,使得开发者可以方便地在应用中集成图片裁剪功能。 `CropImageView`库允许用户选择一个图片,然后在自定义的视图中进行自由裁剪。它支持多种裁剪模式(例如方形...

    Android选择相册拍照裁剪图片完美效果

    - 加载速度:考虑到内存限制,可以通过缩略图加载和懒加载策略优化图片加载速度。 综上所述,实现“Android选择相册拍照裁剪图片完美效果”涉及到多个步骤和技术,包括选择图片、拍照、裁剪、防止变形、权限管理...

    安卓Android源码——实现获取视频的缩略图(ThumbnailUtils),并且播放.zip

    3. 最后,你可以将生成的缩略图设置到ImageView或其他视图组件中,或者进行进一步的处理,如裁剪、调整大小等。 在压缩包中的示例项目可能还包含了如何播放视频的实现。在Android中,可以使用`VideoView`或`...

    多美女图片缩略图

    生成缩略图的方法包括简单地按比例缩小图片,或者使用插值算法保持清晰度。在编程中,我们可以使用各种库(如Python的PIL、Java的ImageIO、JavaScript的sharp等)来实现这一功能。 3. **前端展示**:在网页设计中,...

    android 动态添加图片

    - `Bitmap`操作:用于缩略图生成和内存管理,防止内存溢出。 - `SharedPreferences`:保存用户的图片选择状态。 - `Intent`:用于启动系统图库或返回选中的图片数据。 5. **图片处理**:根据需求,可能需要对...

    Android相机相册裁剪兼容7.0

    例如,避免一次性加载过大尺寸的图片,可以使用缩略图或者在裁剪时动态调整图片大小。同时,合理使用异步处理,避免UI线程阻塞。 在实际开发中,可以创建一个自定义的裁剪工具类,封装裁剪相关的逻辑,包括权限检查...

    拍照和相册选取图片并裁剪得到路径

    服务器接收到图片后,可能需要保存图片文件,生成缩略图,或者进行其他处理。这通常涉及文件系统操作和图像处理库。 9. **安全考虑**: 在整个过程中,要确保用户隐私安全,比如删除不需要的临时图片文件,避免...

    Android实现拍照、选择相册图片并裁剪功能

    在创建`Intent`时,你可以通过设置`EXTRA_OUTPUT`额外参数来指定保存照片的URI,这样可以获得原始图片而不是经过压缩的缩略图。 ```java Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ...

    Android自定义View实现照片裁剪框与照片裁剪功能

    此外,对于大图片的处理,应考虑使用低分辨率的缩略图来提高操作的流畅性,只有在用户确认裁剪区域后才加载高分辨率的图片进行裁剪。 总的来说,实现Android自定义View的照片裁剪功能涉及到多个步骤,包括自定义...

    android图片处理集合demo

    对于大图,可以使用Fresco库实现动态加载,先加载低质量的缩略图,再逐步加载高质量图片,提升用户体验。 6. 图片旋转: Bitmap的rotate方法可以实现图片的旋转,但需要注意旋转会导致Bitmap大小变化,可能引发...

Global site tag (gtag.js) - Google Analytics