iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何正确的使用Android中的图片工具类
  • 644
分享到

如何正确的使用Android中的图片工具类

androidroi 2023-05-31 01:05:37 644人浏览 薄情痞子
摘要

如何正确的使用Android中的图片工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用方法如下:import java.io.ByteArrayOutputStrea

如何正确的使用Android中的图片工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

使用方法如下:

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFORMat;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.canvas;import android.graphics.ColorMatrix;import android.graphics.ColorMatrixColorFilter;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;public class ImageUtil {    public static final int TOP = 0;      //上    public static final int BOTTOM = 1;      //下  public static final int LEFT = 2;      //左  public static final int RIGHT = 3;      //右  public static final int LEFT_TOP = 4;    //左上  public static final int LEFT_BOTTOM = 5;  //左下  public static final int RIGHT_TOP = 6;    //右上  public static final int RIGHT_BOTTOM = 7;  //右下      public static Bitmap zoomBitmap(Bitmap src, float scaleX, float scaleY) {    Matrix matrix = new Matrix();    matrix.setScale(scaleX, scaleY);    Bitmap t_bitmap = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);    return t_bitmap;  }      public static Bitmap zoomBimtap(Bitmap src, int width, int height) {    return Bitmap.createScaledBitmap(src, width, height, true);  }      public static Bitmap drawableToBitmap(Drawable drawable) {    return ((BitmapDrawable)drawable).getBitmap();  }        public static Drawable bitmapToDrawable(Bitmap bitmap) {    Drawable drawable = new BitmapDrawable(bitmap);    return drawable;  }      public static byte[] bitmapToByte(Bitmap bitmap) {    ByteArrayOutputStream out = new ByteArrayOutputStream();    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);    return out.toByteArray();  }      public static Bitmap byteToBitmap(byte[] data) {    if(data.length != 0) {      return BitmapFactory.decodeByteArray(data, 0, data.length);    }    return null;  }      public static Bitmap createRoundedCornerBitmap(Bitmap src, int radius) {    final int w = src.getWidth();    final int h = src.getHeight();    // 高清量32位图    Bitmap bitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);    Paint paint = new Paint();    Canvas canvas = new Canvas(bitmap);    canvas.drawARGB(0, 0, 0, 0);    paint.setColor(0xff424242);    // 防止边缘的锯齿    paint.setFilterBitmap(true);    Rect rect = new Rect(0, 0, w, h);    RectF rectf = new RectF(rect);    // 绘制带圆角的矩形    canvas.drawRoundRect(rectf, radius, radius, paint);        // 取两层绘制交集,显示上层    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));    // 绘制图像    canvas.drawBitmap(src, rect, rect, paint);    return bitmap;  }      public static Drawable createSelectedTip(Context context, int srcId, int tipId) {    Bitmap src = BitmapFactory.decodeResource(context.getResources(), srcId);    Bitmap tip = BitmapFactory.decodeResource(context.getResources(), tipId);    final int w = src.getWidth();    final int h = src.getHeight();    Bitmap bitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);    Paint paint = new Paint();    Canvas canvas = new Canvas(bitmap);    //绘制原图    canvas.drawBitmap(src, 0, 0, paint);    //绘制提示图片    canvas.drawBitmap(tip, (w - tip.getWidth()), 0, paint);    return bitmapToDrawable(bitmap);  }      public static Bitmap createReflectionBitmap(Bitmap src) {    // 两个图像间的空隙    final int spacing = 4;    final int w = src.getWidth();    final int h = src.getHeight();    // 绘制高质量32位图    Bitmap bitmap = Bitmap.createBitmap(w, h + h / 2 + spacing, Config.ARGB_8888);    // 创建燕X轴的倒影图像    Matrix m = new Matrix();    m.setScale(1, -1);    Bitmap t_bitmap = Bitmap.createBitmap(src, 0, h / 2, w, h / 2, m, true);        Canvas canvas = new Canvas(bitmap);    Paint paint = new Paint();    //  绘制原图像    canvas.drawBitmap(src, 0, 0, paint);    // 绘制倒影图像    canvas.drawBitmap(t_bitmap, 0, h + spacing, paint);    // 线性渲染-沿Y轴高到低渲染    Shader shader = new LinearGradient(0, h + spacing, 0, h + spacing + h / 2, 0x70ffffff, 0x00ffffff, Shader.TileMode.MIRROR);    paint.setShader(shader);    // 取两层绘制交集,显示下层。    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));    // 绘制渲染倒影的矩形    canvas.drawRect(0, h + spacing, w, h + h / 2 + spacing, paint);    return bitmap;  }        public static Bitmap createReflectionBitmapForSingle(Bitmap src) {    final int w = src.getWidth();    final int h = src.getHeight();    // 绘制高质量32位图    Bitmap bitmap = Bitmap.createBitmap(w, h / 2, Config.ARGB_8888);    // 创建沿X轴的倒影图像    Matrix m = new Matrix();    m.setScale(1, -1);    Bitmap t_bitmap = Bitmap.createBitmap(src, 0, h / 2, w, h / 2, m, true);    Canvas canvas = new Canvas(bitmap);    Paint paint = new Paint();    // 绘制倒影图像    canvas.drawBitmap(t_bitmap, 0, 0, paint);    // 线性渲染-沿Y轴高到低渲染      Shader shader = new LinearGradient(0, 0, 0, h / 2, 0x70ffffff,        0x00ffffff, Shader.TileMode.MIRROR);    paint.setShader(shader);    // 取两层绘制交集。显示下层。    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));    // 绘制渲染倒影的矩形    canvas.drawRect(0, 0, w, h / 2, paint);    return bitmap;  }      public static Bitmap createGreyBitmap(Bitmap src) {    final int w = src.getWidth();    final int h = src.getHeight();    Bitmap bitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);    Canvas canvas = new Canvas(bitmap);    Paint paint = new Paint();    // 颜色变换的矩阵    ColorMatrix matrix = new ColorMatrix();    // saturation 饱和度值,最小可设为0,此时对应的是灰度图;为1表示饱和度不变,设置大于1,就显示过饱和    matrix.setSaturation(0);    ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);    paint.setColorFilter(filter);    canvas.drawBitmap(src, 0, 0, paint);    return bitmap;  }      public static boolean saveImage(Bitmap src, String filepath, CompressFormat format) {    boolean rs = false;    File file = new File(filepath);    try {      FileOutputStream out = new FileOutputStream(file);      if(src.compress(format, 100, out)) {        out.flush();  //写入流      }      out.close();    } catch (FileNotFoundException e) {      e.printStackTrace();    } catch (IOException e) {      e.printStackTrace();    }    return rs;  }      public static Bitmap createWatermark(Bitmap src, Bitmap watermark, int direction, int spacing) {    final int w = src.getWidth();    final int h = src.getHeight();    Bitmap bitmap = Bitmap.createBitmap(w, h, Config.ARGB_8888);    Canvas canvas = new Canvas(bitmap);    canvas.drawBitmap(src, 0, 0, null);    if(direction == LEFT_TOP) {      canvas.drawBitmap(watermark, spacing, spacing, null);    } else if(direction == LEFT_BOTTOM){      canvas.drawBitmap(watermark, spacing, h - watermark.getHeight() - spacing, null);    } else if(direction == RIGHT_TOP) {      canvas.drawBitmap(watermark, w - watermark.getWidth() - spacing, spacing, null);    } else if(direction == RIGHT_BOTTOM) {      canvas.drawBitmap(watermark, w - watermark.getWidth() - spacing, h - watermark.getHeight() - spacing, null);    }    return bitmap;  }        public static Bitmap composeBitmap(int direction, Bitmap... bitmaps) {    if(bitmaps.length < 2) {      return null;    }    Bitmap firstBitmap = bitmaps[0];    for (int i = 0; i < bitmaps.length; i++) {      firstBitmap = composeBitmap(firstBitmap, bitmaps[i], direction);    }    return firstBitmap;  }    private static Bitmap composeBitmap(Bitmap firstBitmap, Bitmap secondBitmap,      int direction) {    if(firstBitmap == null) {      return null;    }    if(secondBitmap == null) {      return firstBitmap;    }    final int fw = firstBitmap.getWidth();    final int fh = firstBitmap.getHeight();    final int sw = secondBitmap.getWidth();    final int sh = secondBitmap.getHeight();    Bitmap bitmap = null;    Canvas canvas = null;    if(direction == TOP) {      bitmap = Bitmap.createBitmap(sw > fw &#63; sw : fw, fh + sh, Config.ARGB_8888);      canvas = new Canvas(bitmap);      canvas.drawBitmap(secondBitmap, 0, 0, null);      canvas.drawBitmap(firstBitmap, 0, sh, null);    } else if(direction == BOTTOM) {      bitmap = Bitmap.createBitmap(fw > sw &#63; fw : sw, fh + sh, Config.ARGB_8888);      canvas = new Canvas(bitmap);      canvas.drawBitmap(firstBitmap, 0, 0, null);      canvas.drawBitmap(secondBitmap, 0, fh, null);    } else if(direction == LEFT) {      bitmap = Bitmap.createBitmap(fw + sw, sh > fh &#63; sh : fh, Config.ARGB_8888);      canvas = new Canvas(bitmap);      canvas.drawBitmap(secondBitmap, 0, 0, null);      canvas.drawBitmap(firstBitmap, sw, 0, null);    } else if(direction == RIGHT) {      bitmap = Bitmap.createBitmap(fw + sw, fh > sh &#63; fh : sh,          Config.ARGB_8888);      canvas = new Canvas(bitmap);      canvas.drawBitmap(firstBitmap, 0, 0, null);      canvas.drawBitmap(secondBitmap, fw, 0, null);    }    return bitmap;  }    }

--结束END--

本文标题: 如何正确的使用Android中的图片工具类

本文链接: https://www.lsjlt.com/news/222719.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何正确的使用Android中的图片工具类
    如何正确的使用Android中的图片工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用方法如下:import java.io.ByteArrayOutputStrea...
    99+
    2023-05-31
    android roi
  • 如何正确的使用StringUtils工具类
    这期内容当中小编将会给大家带来有关如何正确的使用StringUtils工具类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。可以使用StringUtils工具类来做字符串的操作isEmpty(String ...
    99+
    2023-05-31
    stringutils strin
  • 如何正确的使用微信web开发者工具
    如何正确的使用微信web开发者工具?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为帮助开发者更方便、更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具。它是一个桌...
    99+
    2023-05-31
    java 开发者工具
  • 如何正确的使用Class类
    这篇文章给大家介绍如何正确的使用Class类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。任何一个类都是Class类的实例对象,这个实例对象有三种表示方式第一种表示方式(任何一个类都有一个隐含的静态成员变量class)...
    99+
    2023-05-31
    class类
  • ASP中的数据类型和npm中的数组:如何选择正确的工具?
    ASP和npm是两种不同的工具,用于不同的任务。ASP用于Web开发,而npm则是Node.js的软件包管理器,用于管理Node.js的模块和包。在ASP中,数据类型非常重要,因为它们可以帮助您更好地管理和处理数据。而在npm中,数组是一种...
    99+
    2023-08-15
    npm 数组 数据类型
  • Android中正确使用字体图标(iconfont)的方法
    字体图标 字体图标是指将图标做成字体文件(.ttf),从而代替传统的png等图标资源。 使用字体图标的优点和缺点分别为: 优点:    &...
    99+
    2022-06-06
    方法 字体 Android
  • vue如何在data中引入图片的正确路径
    目录在data中引入图片正确路径1.通过import引入路径才行2.通过require更方便3.在ui上直接动态也要通过requirevue引入图片路径问题方法一方法二在data中引...
    99+
    2022-11-13
  • 去除图片人物背景的工具Removebg如何使用
    去除图片人物背景的工具Removebg如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。可以在线使用,url:https://www.remove.bg/users/sig...
    99+
    2023-06-04
  • 生成精美代码图片的工具Carbon如何使用
    小编给大家分享一下生成精美代码图片的工具Carbon如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言carbon,碳棒的意思。功能非常强大,操作很方...
    99+
    2023-06-15
  • PHP函数和JavaScript数据类型:如何在Web开发中选择正确的工具?
    Web开发需要掌握多种编程语言和技术,其中PHP和JavaScript是最常用的两个语言。PHP是一种服务器端语言,而JavaScript则是一种客户端语言。在Web开发中,经常需要使用PHP函数和JavaScript数据类型来完成各种任...
    99+
    2023-11-14
    函数 javascript 数据类型
  • Android中使用BitmapShader类来制作各种图片的圆角
    public   BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tile...
    99+
    2022-06-06
    图片 Android
  • DEDE仿站过程中CSS图片抓取工具的使用技巧
    在我们进行仿站的时候,使用好的工具,能够提高我们仿照的效率还能够让仿站变得非常轻松。 这个工具是在DEDE仿站的过程中起着非常重要的作用,如果你对DEDE仿站有兴趣,推荐你先看一下dede(织梦)网站前端仿站步骤教程这篇...
    99+
    2022-06-12
    DEDE仿站 CSS图片抓取 工具
  • Springboot内置的工具类CollectionUtils如何使用
    本篇内容主要讲解“Springboot内置的工具类CollectionUtils如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot内置的工具类CollectionUtil...
    99+
    2023-07-06
  • 在Java中如何正确的使用TreeSet
    这期内容当中小编将会给大家带来有关在Java中如何正确的使用TreeSet,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。TreeSet简介TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。...
    99+
    2023-05-31
    java treeset ava
  • 如何在python中正确的使用goto
    今天就跟大家聊聊有关如何在python中正确的使用goto,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和...
    99+
    2023-06-07
  • HashSet如何正确的在Java中使用
    HashSet如何正确的在Java中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HashSet 简介HashSet 是一个没有重复元素的集合。它是由HashMap实现...
    99+
    2023-05-31
    java hashset hs
  • 如何在Go语言中正确使用不同的数据类型?
    Go语言是一门静态类型语言,所以在使用不同的数据类型时需要特别注意。本篇文章将介绍如何在Go语言中正确地使用不同的数据类型,以及如何避免常见的数据类型错误。 一、基本数据类型 Go语言中的基本数据类型包括整型、浮点型、布尔型和字符串类型。以...
    99+
    2023-08-18
    数据类型 面试 git
  • 利用Android如何获取sdcard中的图片
    利用Android如何获取sdcard中的图片?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先你要在AndroidManifest.xml申请读取sdcard...
    99+
    2023-05-31
    android roi sdcard
  • mongodb如何正确的在Spring boot中使用
    这篇文章给大家介绍mongodb如何正确的在Spring boot中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MongoDB是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的...
    99+
    2023-05-31
    springboot mongodb
  • 如何在Java中正确的使用注解
    如何在Java中正确的使用注解?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。注解是jdk1.5新增的特性.大家都知道,jdk1.5在java的发展史上有着划时代的意义.而注...
    99+
    2023-05-31
    java 注解 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作