`
zhuqiang5138
  • 浏览: 31800 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

android 中图片的一些操作

阅读更多
 
  图片的操作有哪些呢?
     如:zoomer-缩放,
         corner-圆角,
         reflected-倒影,
         grayscale-去色黑白,
         drawToBitmap-转换格式,
         ......

BitmapUtil代码:


public class BitmapUtil {

	// zoomer
	public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h){
		int width = bitmap.getWidth();
		int height = bitmap.getHeight();
		Matrix matrix = new Matrix();
		
		float scaleWidth = w/(float)width;
		float scaleHeight = h/(float)height;
		matrix.postScale(scaleWidth, scaleHeight);
		
		Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
		return bitmap2;		
	}
	
	
	// draw2Bitmap
	public static Bitmap draw2Bitmap(Drawable drawable){
		int width = drawable.getIntrinsicHeight();
		int height = drawable.getIntrinsicHeight();
		
		Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() 
				!= PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
		
		Canvas canvas = new Canvas(bitmap);
		drawable.setBounds(0, 0, width, height);
		drawable.draw(canvas);
		
		return bitmap;
	}
	
	
	// corner
	public static Bitmap getCornerBitmap(Bitmap bitmap, float roundPX){
		int width = bitmap.getWidth();
		int height = bitmap.getHeight();
		
		Bitmap bitmap2 = Bitmap.createBitmap(width, height, Config.ARGB_8888);
		Canvas canvas = new Canvas(bitmap2);
		
		final int color = 0xff424242;
		final Paint paint = new Paint();
		final Rect rect = new Rect(0, 0, width, height);
		final RectF rectF = new RectF(rect);

		paint.setColor(color);
		paint.setAntiAlias(true);
		canvas.drawARGB(0, 0, 0, 0);
		canvas.drawRoundRect(rectF, roundPX, roundPX, paint);
		
		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
		canvas.drawBitmap(bitmap, rect, rect, paint);
		
		return bitmap2;
	}
	
	// reflected
	public static Bitmap createReflectedBitmap(Bitmap bitmap){
		final int reflectedGap = 4;
		int width = bitmap.getWidth();
		int height = bitmap.getHeight();
		
		Matrix matrix = new Matrix();
		matrix.preScale(1, -1);
		
		Bitmap reflectedImage = Bitmap.createBitmap(bitmap, 0, height/2, width, height/2, matrix, false);
		Bitmap reflectedBitmap = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);
		
		Canvas canvas = new Canvas(reflectedBitmap);
		canvas.drawBitmap(bitmap, 0, 0, null);
		Paint defaultPaint = new Paint();
		canvas.drawRect(0, height, width, height + reflectedGap, defaultPaint);
		canvas.drawBitmap(reflectedImage, 0, height + reflectedGap, null);
		
		Paint paint = new Paint();
		LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
								reflectedBitmap.getHeight() + reflectedGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
		paint.setShader(shader);
		paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
		canvas.drawRect(0, height, width, reflectedBitmap.getHeight() + reflectedGap, paint);
		
		return reflectedBitmap;
	}
	
}
     //grayscale
	public static Bitmap toGrayscale(Bitmap bmpOriginal) {
		int width=bmpOriginal.getWidth();
		int height = bmpOriginal.getHeight();
		Bitmap bmpGrayscale = Bitmap.createBitmap(width, height,Bitmap.Config.RGB_565);
		Canvas c = new Canvas(bmpGrayscale);
		Paint paint = new Paint();
		ColorMatrix cm = new ColorMatrix();
		cm.setSaturation(0);
		ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
		paint.setColorFilter(f);
		c.drawBitmap(bmpOriginal, 0, 0, paint);
		return bmpGrayscale;
	}


应用的话就如:
Bitmap bitmap = bitmapProcess.drawable2Bitmap(drawable); 
Bitmap zoomBitmap = bitmapProcess.zoomBitmap(bitmap, 100, 100);
......
//drawable to bitmap   
imgView.setImageBitmap(roundBitmap);
//bitmap to drawable   
Drawable roundDrawable = new BitmapDrawable(roundBitmap);
imgView.setBackgroundDrawable(roundDrawable);   
分享到:
评论

相关推荐

    android中webview图片点击及图片手势操作

    3. 实现手势监听器:`GestureListener`和`ScaleListener`需要重写对应的手势回调,如`onDown()`, `onScroll()`, `onSingleTapUp()`, `onScaleBegin()`, `onScaleEnd()`等,根据手势类型进行相应的图片操作。...

    Android-强大的图片操作库

    本文将深入探讨一个强大的Android图片操作库,并基于提供的压缩包文件"Liberuman-ImageSet-d621930"进行详细讲解。 标题中的“Android-强大的图片操作库”指的可能是一个专门用于Android平台的图片处理框架,这类库...

    android 判断程序无操作3秒后自动进入图片轮播

    在Android开发中,有时我们需要实现一个功能,当用户在应用中一段时间内没有进行任何操作时,系统自动触发某个行为,例如进入图片轮播模式。这个功能可以提高用户体验,特别是对于那些需要展示信息或者吸引用户注意...

    Android-一个Android图片缩放查看控件支持手势

    这个名为"Android-一个Android图片缩放查看控件支持手势"的项目,旨在提供一个自定义的视图控件,它允许用户通过手势进行图片的放大、缩小以及平移操作,提升用户体验。下面我们将深入探讨这个控件的关键知识点和...

    Android中实现WebView点击图片放大显示

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容。在某些场景下,用户可能需要查看WebView加载的网页中的图片,此时,提供一个点击图片放大显示的功能会大大提升用户体验...

    android 中图片资源的加密

    在Android开发中,为了增强应用的安全性,保护敏感图片资源不被未经授权的用户访问或篡改,我们可以对图片资源进行加密。以下是对标题"android 中图片资源的加密"的详细解释,以及如何实现这一功能。 1. **图片资源...

    android开发常用图片

    在Android开发过程中,图片资源是应用界面设计的重要组成部分,它们能够增强用户体验,提供直观的视觉信息。本资源包“android开发常用图片”包含了全面的图片素材,适合Android开发者在构建应用时参考和使用。以下...

    android框选图片中的一部分并截取

    在Android平台上,框选图片中的一部分并截取是一项常见的需求,比如在应用中实现自定义截图功能、编辑图片或者在图像处理中选择特定区域。这个功能涉及到多个Android SDK中的类和方法,包括图像处理、视图操作以及...

    android从网络获取图片资源,图片放大、缩小、触摸等操作。

    在Android开发中,从网络获取图片资源并进行显示、缩放和触摸操作是常见的需求。以下将详细讲解这个过程中的关键技术点。 首先,从网络异步加载图片资源是为了避免阻塞主线程,确保用户界面(UI)的流畅性。Android...

    Android 图片浏览全屏缩放

    在Android开发中,实现图片浏览的全屏缩放效果是一项常见的需求,特别是在社交应用中,如QQ好友动态和微信朋友圈。这种功能不仅需要提供良好的用户体验,还需要考虑性能和内存优化,因为图片通常较大,处理不当可能...

    android圆形图片裁剪demo以及实现

    在Android开发中,有时我们需要对用户上传的图片进行特定形状的裁剪,比如常见的圆形头像。本示例"android圆形图片裁剪demo以及实现"就是针对这一需求提供的一种解决方案。下面将详细介绍如何在Android应用中实现...

    android多张图片展示

    在Android开发中,实现“多张图片展示”的功能是一个常见的需求,尤其在社交应用中,如微信的朋友圈功能。这个功能允许用户通过多种途径选择图片,例如从相册选取多张图片或者直接拍照,之后还能提供删除选项。下面...

    Android 单图片选择,一个dialog全搞定

    首先,我们需要了解Android 7.0引入的一些新特性,虽然此功能在更早的版本中也可实现,但在7.0版本,系统对权限管理和用户体验做了优化,使得开发者可以更加便捷地处理图片选取。 1. **请求权限**:Android 6.0...

    Android图片处理源码

    这个压缩包文件“Android图片处理源码”很可能包含了一些用于Android平台的图片处理库或者示例代码,帮助开发者更好地理解和实现图片的加载、显示、裁剪、滤镜效果、压缩等功能。下面我们将深入探讨Android图片处理...

    Android studio 实现图片翻转

    在Android开发中,实现类似支付宝五福图片翻转效果,主要涉及到的是视图动画(View Animation)或帧动画(Frame Animation)以及自定义View的知识。Android Studio作为Android开发的官方集成开发环境,提供了丰富的...

    Android开发实现保存图片到手机相册功能

    当我们需要在Android应用程序中保存图片到手机相册时,需要考虑多种因素,例如手机品牌、图片格式、文件操作技巧等。本文将详细介绍Android开发实现保存图片到手机相册功能的实现方法和相关知识点。 一、图片格式的...

    Android 下载图片保存到相册

    在Android中,通常会将图片保存到公共的外部存储目录,这样系统相册应用可以检测到并显示出来: ```java private void saveImageToGallery(byte[] imageData) { File storageDir = Environment....

    android图片翻转动画

    在Android开发中,实现图片翻转动画是一种常见的交互设计,可以增强用户体验,使得应用看起来更加生动有趣。本文将深入探讨如何在Android平台上实现3D图片翻转动画。 首先,我们需要了解Android中的动画系统。...

    android从指定文件夹中显示图片

    在Android平台上,从指定文件夹显示图片涉及到一系列的步骤和技术,包括文件系统操作、图片加载库的使用以及UI设计。以下是对这个主题的详细讲解: 首先,我们需要理解Android的文件系统结构。Android设备通常有两...

    Android图片加密、解密、切割(源码)

    总的来说,这个项目涵盖了Android图片处理的核心技术,包括加密解密的安全性,以及图片切割的灵活性。对于Android开发者而言,理解并掌握这些技术对于提升应用的安全性和功能性都有很大帮助。通过源码学习,可以深入...

Global site tag (gtag.js) - Google Analytics