`
w1985chun
  • 浏览: 106831 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

Android 图片处理方法大全

 
阅读更多

整理了一下目前Android开发中图片的各种处理方法:

Java代码
        
  1.    /** 
  2.     
  3.      * 使头像变灰 
  4.     
  5.      * @param drawable 
  6.     
  7.      */  
  8.     
  9.     public static void porBecomeGrey(ImageView imageView, Drawable drawable) {  
  10.     
  11.         drawable.mutate();      
  12.     
  13.         ColorMatrix cm = new ColorMatrix();      
  14.     
  15.         cm.setSaturation(0);      
  16.     
  17.         ColorMatrixColorFilter cf = new ColorMatrixColorFilter(cm);      
  18.     
  19.         drawable.setColorFilter(cf);   
  20.     
  21.         imageView.setImageDrawable(drawable);  
  22.     
  23.     }  

 

Java 代码复制内容到剪贴板
        
  1. Drawable drawable = new FastBitmapDrawable(bitmap);    
Java 代码复制内容到剪贴板
        
  1. public byte[] getBitmapByte(Bitmap bitmap){    
  2.     
  3.     ByteArrayOutputStream out = new ByteArrayOutputStream();    
  4.     
  5.     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);    
  6.     
  7.     try {    
  8.     
  9.         out.flush();    
  10.     
  11.         out.close();    
  12.     
  13.     } catch (IOException e) {    
  14.     
  15.         e.printStackTrace();    
  16.     
  17.     }    
  18.     
  19.     return out.toByteArray();    
  20.     
  21. }    
  22.     
  23.     
  24.     
  25.     
  26.     
  27. public Bitmap getBitmapFromByte(byte[] temp){    
  28.     
  29.     if(temp != null){    
  30.     
  31.         Bitmap bitmap = BitmapFactory.decodeByteArray(temp, 0, temp.length);    
  32.     
  33.         return bitmap;    
  34.     
  35.     }else{    
  36.     
  37.         return null;    
  38.     
  39.     }    
  40.     
  41. }    
Java 代码复制内容到剪贴板
        
  1. /**
  2.     
  3.      * 将Drawable转化为Bitmap
  4.     
  5.      * @param drawable
  6.     
  7.      * @return
  8.     
  9.      */  
  10.     
  11.     public static Bitmap drawableToBitmap(Drawable drawable) {  
  12.     
  13.         int width = drawable.getIntrinsicWidth();  
  14.     
  15.         int height = drawable.getIntrinsicHeight();  
  16.     
  17.         Bitmap bitmap = Bitmap.createBitmap(width, height, drawable  
  18.     
  19.                 .getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
  20.     
  21.                 : Bitmap.Config.RGB_565);  
  22.     
  23.         Canvas canvas = new Canvas(bitmap);  
  24.     
  25.         drawable.setBounds(00, width, height);  
  26.     
  27.         drawable.draw(canvas);  
  28.     
  29.         return bitmap;  
  30.     
  31.     }  
Java 代码复制内容到剪贴板
        
  1. /**
  2.     
  3.     * 获取图片的倒影
  4.     
  5.     * @param bitmap
  6.     
  7.     * @return
  8.     
  9.     */  
  10.     
  11.     public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap) {  
  12.     
  13.         final int reflectionGap = 4;  
  14.     
  15.         int width = bitmap.getWidth();  
  16.     
  17.         int height = bitmap.getHeight();  
  18.     
  19.   
  20.     
  21.         Matrix matrix = new Matrix();  
  22.     
  23.         matrix.preScale(1, -1);  
  24.     
  25.   
  26.     
  27.         Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,  
  28.     
  29.                 width, height / 2, matrix, false);  
  30.     
  31.   
  32.     
  33.         Bitmap bitmapWithReflection = Bitmap.createBitmap(width,  
  34.     
  35.                 (height + height / 2), Config.ARGB_8888);  
  36.     
  37.   
  38.     
  39.         Canvas canvas = new Canvas(bitmapWithReflection);  
  40.     
  41.         canvas.drawBitmap(bitmap, 00null);  
  42.     
  43.         Paint deafalutPaint = new Paint();  
  44.     
  45.         canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);  
  46.     
  47.   
  48.     
  49.         canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);  
  50.     
  51.   
  52.     
  53.         Paint paint = new Paint();  
  54.     
  55.         LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,  
  56.     
  57.                 bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,  
  58.     
  59.                 0x00ffffff, TileMode.CLAMP);  
  60.     
  61.         paint.setShader(shader);  
  62.     
  63.         paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
  64.     
  65.         canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()  
  66.     
  67.                 + reflectionGap, paint);  
  68.     
  69.         return bitmapWithReflection;  
  70.     
  71.     }  
Java 代码复制内容到剪贴板
        
  1. /**
  2.     
  3.     * 把图片变成圆角  
  4.     
  5.     * @param bitmap 需要修改的图片  
  6.     
  7.     * @param pixels 圆角的弧度  
  8.     
  9.     * @return 圆角图片  
  10.     
  11.     */      
  12.     
  13.    public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {      
  14.     
  15.       
  16.     
  17.        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);      
  18.     
  19.        Canvas canvas = new Canvas(output);      
  20.     
  21.       
  22.     
  23.        final int color = 0xff424242;      
  24.     
  25.        final Paint paint = new Paint();      
  26.     
  27.        final Rect rect = new Rect(00, bitmap.getWidth(), bitmap.getHeight());      
  28.     
  29.        final RectF rectF = new RectF(rect);      
  30.     
  31.        final float roundPx = pixels;      
  32.     
  33.       
  34.     
  35.        paint.setAntiAlias(true);      
  36.     
  37.        canvas.drawARGB(0000);      
  38.     
  39.        paint.setColor(color);      
  40.     
  41.        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);      
  42.     
  43.       
  44.     
  45.        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));      
  46.     
  47.        canvas.drawBitmap(bitmap, rect, rect, paint);      
  48.     
  49.       
  50.     
  51.        return output;      
  52.     
  53.    }    
Java 代码复制内容到剪贴板
        
  1. /**
  2.     
  3.      * 缩放图片
  4.     
  5.      * @param bmp
  6.     
  7.      * @param width
  8.     
  9.      * @param height
  10.     
  11.      * @return
  12.     
  13.      */  
  14.     
  15.     public static Bitmap PicZoom(Bitmap bmp, int width, int height) {  
  16.     
  17.         int bmpWidth = bmp.getWidth();  
  18.     
  19.         int bmpHeght = bmp.getHeight();  
  20.     
  21.         Matrix matrix = new Matrix();  
  22.     
  23.         matrix.postScale((float) width / bmpWidth, (float) height / bmpHeght);  
  24.     
  25.   
  26.     
  27.         return Bitmap.createBitmap(bmp, 00, bmpWidth, bmpHeght, matrix, true);  
  28.     
  29.     }  
Java 代码复制内容到剪贴板
        
  1. /**
  2.     
  3.      * @param photoPath --原图路经
  4.     
  5.      * @param aFile     --保存缩图
  6.     
  7.      * @param newWidth  --缩图宽度
  8.     
  9.      * @param newHeight --缩图高度
  10.     
  11.      */  
  12.     
  13.     public static boolean bitmapToFile(String photoPath, File aFile, int newWidth, int newHeight) {  
  14.     
  15.         BitmapFactory.Options options = new BitmapFactory.Options();  
  16.     
  17.         options.inJustDecodeBounds = true;  
  18.     
  19.         // 获取这个图片的宽和高  
  20.     
  21.         Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);  
  22.     
  23.         options.inJustDecodeBounds = false;  
  24.     
  25.   
  26.     
  27.         //计算缩放比  
  28.     
  29.         options.inSampleSize = reckonThumbnail(options.outWidth, options.outHeight, newWidth, newHeight);  
  30.     
  31.   
  32.     
  33.         bitmap = BitmapFactory.decodeFile(photoPath, options);  
  34.     
  35.   
  36.     
  37.         try {  
  38.     
  39.             ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  40.     
  41.             bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);  
  42.     
  43.             byte[] photoBytes = baos.toByteArray();  
  44.     
  45.   
  46.     
  47.             if (aFile.exists()) {  
  48.     
  49.                 aFile.delete();  
  50.     
  51.             }  
  52.     
  53.             aFile.createNewFile();  
  54.     
  55.   
  56.     
  57.             FileOutputStream fos = new FileOutputStream(aFile);  
  58.     
  59.             fos.write(photoBytes);  
  60.     
  61.             fos.flush();  
  62.     
  63.             fos.close();  
  64.     
  65.   
  66.     
  67.             return true;  
  68.     
  69.         } catch (Exception e1) {  
  70.     
  71.             e1.printStackTrace();  
  72.     
  73.             if (aFile.exists()) {  
  74.     
  75.                 aFile.delete();  
  76.     
  77.             }  
  78.     
  79.             Log.e("Bitmap To File Fail", e1.toString());  
  80.     
  81.             return false;  
  82.     
  83.         }  
  84.     
  85.     }  
Java 代码复制内容到剪贴板
        
  1. /**
  2.     
  3.      * 计算缩放比
  4.     
  5.      * @param oldWidth
  6.     
  7.      * @param oldHeight
  8.     
  9.      * @param newWidth
  10.     
  11.      * @param newHeight
  12.     
  13.      * @return
  14.     
  15.      */  
  16.     
  17.     public static int reckonThumbnail(int oldWidth, int oldHeight, int newWidth, int newHeight) {  
  18.     
  19.         if ((oldHeight > newHeight && oldWidth > newWidth)  
  20.     
  21.                 || (oldHeight <= newHeight && oldWidth > newWidth)) {  
  22.     
  23.             int be = (int) (oldWidth / (float) newWidth);  
  24.     
  25.             if (be <= 1)  
  26.     
  27.                 be = 1;  
  28.     
  29.             return be;  
  30.     
  31.         } else if (oldHeight > newHeight && oldWidth <= newWidth) {  
  32.     
  33.             int be = (int) (oldHeight / (float) newHeight);  
  34.     
  35.             if (be <= 1)  
  36.     
  37.                 be = 1;  
  38.     
  39.             return be;  
  40.     
  41.         }  
  42.     
  43.   
  44.     
  45.         return 1;  
  46.     
  47.     }  

Android边框圆角

XML/HTML 代码复制内容到剪贴板
        
  1. <?xml version="1.0" encoding="utf-8"?>      
  2.     
  3. <shape xmlns:android="http://schema...android">        
  4.     
  5.     <solid android:color="#000000" />        
  6.     
  7.     <corners android:topLeftRadius="10dp"      
  8.     
  9.                     android:topRightRadius="10dp"        
  10.     
  11.                 android:bottomRightRadius="10dp"      
  12.     
  13.                 android:bottomLeftRadius="10dp"/>        
  14.     
  15. </shape>    

解释:solid的表示填充颜色,为了简单,这里用的是黑色。

而corners则是表示圆角,注意的是这里bottomRightRadius是左下角而不是右下角,bottomLeftRadius右下角。 
当然上面的效果也可以像下面一样设置,如下: <corners android:radius="5dp" />  

 

原文来自:http://06peng.com/read.php/52.htm

分享到:
评论

相关推荐

    Android图片处理源码

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

    android图片处理集合demo

    "android图片处理集合demo"是一个示例项目,集中展示了多种图片处理技术。虽然代码可能没有经过精心整理,但仍然能为开发者提供宝贵的参考。 1. 图片加载库: Android原生的Bitmap API在处理大量或大尺寸图片时...

    Android图片处理资料

    理解如何创建、加载、解码和管理Bitmap以优化内存使用是Android图片处理的基础。 2. **OpenGL ES** - 在高性能图像处理中,可能会涉及使用OpenGL ES进行渲染,这需要理解顶点坐标、纹理映射、着色器语言(GLSL)等...

    Android图片处理效果

    在Android开发中,图片处理是不可或缺的一部分,尤其在创建用户界面和提高用户体验时。本教程将深入探讨如何在Android...通过动手实践,你会更深入地理解Android图片处理的各种技巧,并能自如地运用到自己的项目中。

    android图片处理工具

    本篇将深入探讨Android图片处理工具的相关知识点,帮助开发者更好地理解和运用这些工具。 首先,Android SDK本身提供了基本的图片处理能力,例如Bitmap类,它是Android中处理图像的基础。Bitmap可以用来加载、创建...

    全部android图片处理特效

    这个压缩包文件"全部android图片处理特效"显然包含了实现这些特效的各种代码示例或库。以下是对这些特效的详细解析: 1. **图片缩放**:Android提供了Bitmap类,可以使用其`createScaledBitmap()`方法对图片进行...

    Android100种图片处理效果大全项目

    通过研究这个项目,开发者不仅可以掌握Android图片处理的基础知识,还能了解到如何在实际开发中提高用户体验,比如通过异步处理防止UI卡顿,通过合理的内存管理避免OOM(Out Of Memory)错误。同时,此项目还可以...

    Android图片处理工具类

    在Android开发中,图片处理是一项常见的任务,尤其是在网络通信、数据存储或用户界面展示时。本文将详细讨论如何使用基于base64的图片处理工具类,以实现图片与base64字符串之间的转换。 首先,我们要理解什么是...

    android图片灰度处理

    接下来,我们将深入探讨Android中实现图片灰度处理的原理与方法。 首先,理解灰度图像的基本概念至关重要。灰度图像,顾名思义,是只有灰度层次而没有颜色的图像。每个像素点的值代表一个灰度级,通常范围在0(黑色...

    Android 完美实现图片圆角和圆形

    在Android开发中,有时我们需要对显示的图片进行特殊处理,比如让图片呈现圆角或完全圆形。本知识点将深入探讨如何在Android应用中完美实现图片的圆角和圆形效果。 首先,我们来看如何实现图片的圆角效果。Android...

    android 图片管理器

    在Android平台上,图片管理器是一种用于组织、浏览和操作设备上图像的应用组件。这个特定的“android 图片管理器”项目可能是一个示例或学习资源,尽管存在一些已知的bug,但仍然提供了有价值的学习机会。下面我们将...

    Android代码-图片处理sdk

    图片处理sdk(just for eclipse) Note: 新的项目(for studio)转移到https://github.com/jarlen/PhotoEdit (包括jni本地源码) cn.ffmpeg gif mp4 互转 com.js.photosdk.bodywarp 图片变形 com.js.photosdk.crop ...

    android图片处理总结

    综上所述,Android图片处理涉及多个层面,需要根据具体需求选择合适的方法和技术。通过合理的图片加载策略、内存管理、性能优化,以及运用各种图片处理库,可以创建出用户友好且高效的图片应用。

    android图片模糊处理和图片移动

    为了处理图片的平移,我们需要实现`onScroll()`方法。在该方法中,我们可以更新图片的位置,使其跟随手指的滑动。同时,为了保持图片在边界内的显示,我们需要添加适当的边界检查。 对于图片的缩放,我们需在`on...

    Android应用源码之100种图片处理效果大全项目.rar

    《Android应用源码之100种图片处理效果大全项目》是一个非常实用的学习资源,它提供了丰富的图片处理技术实现,适合Android开发者深入理解和实践。在这个项目中,你可以找到各种图片处理技术的应用实例,涵盖了许多...

    android图片处理技术

    android资源参考代码,关于对图片的处理,用代码动态分割图片,使其形成动画

    Android编程中图片特效处理方法小结

    这里介绍的Android图片处理方法包括: 转换 – drawable To bitmap 缩放 – Zoom 圆角 – Round Corner 倒影 – Reflected bitmapPrcess code: package com.learn.games; import android.graphics.Bitmap; ...

    基于Android的图片管理器设计与实现

    在本篇毕业论文"基于Android的图片管理器设计与实现"中,作者深入探讨了如何构建一个高效、用户友好的移动设备图片管理应用。论文主要分为五个部分,涵盖了系统开发背景、需求分析、系统设计、详细设计以及系统实现...

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

    这些库可以帮助开发者轻松地处理图片的加载和显示,同时提供对图片格式、尺寸和质量的优化。 7. **高性能渲染** 为了确保流畅的用户体验,开发者可能考虑了硬件加速。通过在自定义View中开启硬件加速,可以利用GPU...

    android图片处理:让图片一直匀速旋转

    在Android开发中,图片处理是一项常见的任务,尤其是在创建动态效果或者用户交互时。本文将深入探讨如何实现一个功能,让图片能够一直匀速旋转。这个技术可以用于制作各种动画效果,比如加载指示器或者趣味性的用户...

Global site tag (gtag.js) - Google Analytics