本文用来记录一些Android 操作图片的方法,方便查看。

1.将Drawable转化为Bitmap

  1. public static Bitmap drawableToBitmap(Drawable drawable){
  2. int width = drawable.getIntrinsicWidth();
  3. int height = drawable.getIntrinsicHeight();
  4. Bitmap bitmap = Bitmap.createBitmap(width, height,
  5. drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
  6. : Bitmap.Config.RGB_565);
  7. Canvas canvas = new Canvas(bitmap);
  8. drawable.setBounds(0,0,width,height);
  9. drawable.draw(canvas);
  10. return bitmap;
  11. }

2.获得圆角图片的方法

  1. public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){
  2. Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
  3. .getHeight(), Config.ARGB_8888);
  4. Canvas canvas = new Canvas(output);
  5. final int color = 0xff424242;
  6. final Paint paint = new Paint();
  7. final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
  8. final RectF rectF = new RectF(rect);
  9. paint.setAntiAlias(true);
  10. canvas.drawARGB(0, 0, 0, 0);
  11. paint.setColor(color);
  12. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
  13. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
  14. canvas.drawBitmap(bitmap, rect, rect, paint);
  15. return output;
  16. }

3.获得带倒影的图片方法

    1. public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){
    2. final int reflectionGap = 4;
    3. int width = bitmap.getWidth();
    4. int height = bitmap.getHeight();
    5. Matrix matrix = new Matrix();
    6. matrix.preScale(1, -1);
    7. Bitmap reflectionImage = Bitmap.createBitmap(bitmap,
    8. , height/2, width, height/2, matrix, false);
    9. Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);
    10. Canvas canvas = new Canvas(bitmapWithReflection);
    11. canvas.drawBitmap(bitmap, 0, 0, null);
    12. Paint deafalutPaint = new Paint();
    13. canvas.drawRect(0, height,width,height + reflectionGap,
    14. deafalutPaint);
    15. canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
    16. Paint paint = new Paint();
    17. LinearGradient shader = new LinearGradient(0,
    18. bitmap.getHeight(), 0, bitmapWithReflection.getHeight()
    19. + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
    20. paint.setShader(shader); //important
    21. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
    22. canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
    23. + reflectionGap, paint);
    24. return bitmapWithReflection;
    25. }

android中图片倒影、圆角效果重绘的更多相关文章

  1. Android中实现ListView圆角效果[转]

    本文演示如何Android中实现ListView圆角效果. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看圆角,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,特 ...

  2. 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析

    原文:关于Android中图片大小.内存占用与drawable文件夹关系的研究与分析 相关: Android drawable微技巧,你所不知道的drawable的那些细节 经常会有朋友问我这个问题: ...

  3. Android中图片占用内存的计算

    Android中图片占用内存的计算 原文链接 http://blog.sina.com.cn/s/blog_4e60b09d01016133.html   在Android开发中,我现在发现很多人还不 ...

  4. Android 中图片压缩分析(上)

    作者: shawnzhao,QQ音乐技术团队一员 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩. 前者是在不改变图片尺寸的情 ...

  5. android中设置Animation 动画效果

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  6. android中图片的三级缓存cache策略(内存/文件/网络)

    实现图片缓存也不难,需要有相应的cache策略.这里我采用 内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且 ...

  7. Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)

    原文地址:http://menxu.lofter.com/post/164b9d_3ebf79 package com.teamkn.base.utils; import java.io.ByteAr ...

  8. android实现图片平铺效果&WebView多点触控实现缩放

    1.图片平铺效果实现非常简单,只要在xml中添加一个 android:tileMode的属性就可以了.首先在drawable文件夹中添加自己的my.xml文件.代码: Java代码 <?xml ...

  9. Android实现图片轮显效果——自定义ViewPager控件

    一.问题概述 使用ViewPager控件实现可横向翻页.水平切换图片等效果,但ViewPager需要手动滑动才能切换页面,图片轮显效果的效果本质上就是在ViewPager控件的基础上让它能自动的进行切 ...

随机推荐

  1. 【Educational Codeforces Round 37 E】Connected Components?

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs. 用一个链表来记录哪些点已经确定在某一个联通快里了. 一开始每个点都能用. 然后从第一个点开始进行bfs. 然后对于它的所有 ...

  2. ECNUOJ 2615 会议安排

    会议安排 Time Limit:1000MS Memory Limit:65536KB Total Submit:451 Accepted:102 Description 科研人员与相关领域的国内外同 ...

  3. 洛谷 P2630 图像变换

    P2630 图像变换 题目描述 给定3行3列的图像各像素点灰度值,给定最终图像,求最短.字典序最小的操作序列. 其中,可能的操作及对应字符有如下四种: A:顺时针旋转90度: B:逆时针旋转90度: ...

  4. SpringMVC拓展

    ### 原生SpringMVC有如下缺陷 参数的JSON反序列化只支持@RequestBody注解,这意味着不能在controller方法中写多个参数,如下代码是不对的 public Map test ...

  5. ArcGIS api for javascript——用缓存区查询地图

    描述 本例展示了如何在另外一个任务里使用一个任务的结果.单击地图查看被单击的点的1公里范围内的缓存(如果需要可以修改这个默认的缓存距离).也可以看缓存区的这些点的人口普查街区信息.单击一个点查看更多的 ...

  6. Memcache启动&amp;存储原理&amp;集群

    一. windows下安装启动 首先将memcache的bin文件夹增加到Path环境变量中.方便后面使用命令: 然后运行 memcached –dinstall 命令安装memcache的服务: 然 ...

  7. Connect the Campus (Uva 10397 Prim || Kruskal + 并查集)

    题意:给出n个点的坐标,要把n个点连通,使得总距离最小,可是有m对点已经连接,输入m,和m组a和b,表示a和b两点已经连接. 思路:两种做法.(1)用prim算法时,输入a,b.令mp[a][b]=0 ...

  8. java内部类的初始化

    public class InnerClassTest { /** * @param args */ public static void main(String[] args) { // TODO  ...

  9. vim基础学习之EX命令

    :tabnew -创建新标签 :split(sp)-垂直分割窗口 如果没有打开新的文件,那么会打开原来窗口的文件 :vsplit(vsp)-水平分割窗口 如果没有打开新的文件,那么会打开原来窗口的文件 ...

  10. OOM框架AutoMapper基本使用(2)

    出于安全考虑,在后台与前台进行数据传输时,往往不会直接传输实体模型,而是使用Dto(Data transfer object 数据传输对象),这样在后台往前台传递数据时可以省略不必要的信息,只保留必要 ...