iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >android开发中如何对图片进行处理
  • 796
分享到

android开发中如何对图片进行处理

androidroi 2023-05-31 11:05:19 796人浏览 安东尼
摘要

这篇文章给大家介绍Android开发中如何对图片进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。创建一个Java类CircleImageView把下面的代码复制过去,报错的导包package de.hdodenh

这篇文章给大家介绍Android开发中如何对图片进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创建一个Java类CircleImageView把下面的代码复制过去,报错的导包

package de.hdodenhof.circleimageview; import edu.njupt.zhb.main.R; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Shader; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView;  public class CircleImageView extends ImageView {   private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;   private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888;  private static final int COLORDRAWABLE_DIMENSioN = 1;   private static final int DEFAULT_BORDER_WIDTH = 0;  private static final int DEFAULT_BORDER_COLOR = Color.BLACK;   private final RectF mDrawableRect = new RectF();  private final RectF mBorderRect = new RectF();   private final Matrix mShaderMatrix = new Matrix();  private final Paint mBitmapPaint = new Paint();  private final Paint mBorderPaint = new Paint();   private int mBorderColor = DEFAULT_BORDER_COLOR;  private int mBorderWidth = DEFAULT_BORDER_WIDTH;   private Bitmap mBitmap;  private BitmapShader mBitmapShader;  private int mBitmapWidth;  private int mBitmapHeight;   private float mDrawableRadius;  private float mBorderRadius;   private boolean mReady;  private boolean mSetupPending;   public CircleImageView(Context context) {   super(context);  }   public CircleImageView(Context context, AttributeSet attrs) {   this(context, attrs, 0);  }   public CircleImageView(Context context, AttributeSet attrs, int defStyle) {   super(context, attrs, defStyle);   super.setScaleType(SCALE_TYPE);    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircleImageView, defStyle, 0);    mBorderWidth = a.getDimensionPixelSize(R.styleable.CircleImageView_border_width, DEFAULT_BORDER_WIDTH);   mBorderColor = a.getColor(R.styleable.CircleImageView_border_color, DEFAULT_BORDER_COLOR);    a.recycle();    mReady = true;    if (mSetupPending) {    setup();    mSetupPending = false;   }  }   @Override  public ScaleType getScaleType() {   return SCALE_TYPE;  }   @Override  public void setScaleType(ScaleType scaleType) {   if (scaleType != SCALE_TYPE) {    throw new IllegalArgumentException(String.fORMat("ScaleType %s not supported.", scaleType));   }  }   @Override  protected void onDraw(Canvas canvas) {   if (getDrawable() == null) {    return;   }    canvas.drawCircle(getWidth() / 2, getHeight() / 2, mDrawableRadius, mBitmapPaint);   canvas.drawCircle(getWidth() / 2, getHeight() / 2, mBorderRadius, mBorderPaint);  }   @Override  protected void onSizeChanged(int w, int h, int oldw, int oldh) {   super.onSizeChanged(w, h, oldw, oldh);   setup();  }   public int getBorderColor() {   return mBorderColor;  }   public void setBorderColor(int borderColor) {   if (borderColor == mBorderColor) {    return;   }    mBorderColor = borderColor;   mBorderPaint.setColor(mBorderColor);   invalidate();  }   public int getBorderWidth() {   return mBorderWidth;  }   public void setBorderWidth(int borderWidth) {   if (borderWidth == mBorderWidth) {    return;   }    mBorderWidth = borderWidth;   setup();  }   @Override  public void setImageBitmap(Bitmap bm) {   super.setImageBitmap(bm);   mBitmap = bm;   setup();  }   @Override  public void setImageDrawable(Drawable drawable) {   super.setImageDrawable(drawable);   mBitmap = getBitmapFromDrawable(drawable);   setup();  }   @Override  public void setImageResource(int resId) {   super.setImageResource(resId);   mBitmap = getBitmapFromDrawable(getDrawable());   setup();  }   private Bitmap getBitmapFromDrawable(Drawable drawable) {   if (drawable == null) {    return null;   }    if (drawable instanceof BitmapDrawable) {    return ((BitmapDrawable) drawable).getBitmap();   }    try {    Bitmap bitmap;     if (drawable instanceof ColorDrawable) {     bitmap = Bitmap.createBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG);    } else {     bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), BITMAP_CONFIG);    }     Canvas canvas = new Canvas(bitmap);    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());    drawable.draw(canvas);    return bitmap;   } catch (OutOfMemoryError e) {    return null;   }  }   private void setup() {   if (!mReady) {    mSetupPending = true;    return;   }    if (mBitmap == null) {    return;   }    mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);    mBitmapPaint.setAntiAlias(true);   mBitmapPaint.setShader(mBitmapShader);    mBorderPaint.setStyle(Paint.Style.STROKE);   mBorderPaint.setAntiAlias(true);   mBorderPaint.setColor(mBorderColor);   mBorderPaint.setStrokeWidth(mBorderWidth);    mBitmapHeight = mBitmap.getHeight();   mBitmapWidth = mBitmap.getWidth();    mBorderRect.set(0, 0, getWidth(), getHeight());   mBorderRadius = Math.min((mBorderRect.height() - mBorderWidth) / 2, (mBorderRect.width() - mBorderWidth) / 2);    mDrawableRect.set(mBorderWidth, mBorderWidth, mBorderRect.width() - mBorderWidth, mBorderRect.height() - mBorderWidth);   mDrawableRadius = Math.min(mDrawableRect.height() / 2, mDrawableRect.width() / 2);    updateShaderMatrix();   invalidate();  }   private void updateShaderMatrix() {   float scale;   float dx = 0;   float dy = 0;    mShaderMatrix.set(null);    if (mBitmapWidth * mDrawableRect.height() > mDrawableRect.width() * mBitmapHeight) {    scale = mDrawableRect.height() / (float) mBitmapHeight;    dx = (mDrawableRect.width() - mBitmapWidth * scale) * 0.5f;   } else {    scale = mDrawableRect.width() / (float) mBitmapWidth;    dy = (mDrawableRect.height() - mBitmapHeight * scale) * 0.5f;   }    mShaderMatrix.setScale(scale, scale);   mShaderMatrix.postTranslate((int) (dx + 0.5f) + mBorderWidth, (int) (dy + 0.5f) + mBorderWidth);    mBitmapShader.setLocalMatrix(mShaderMatrix);  }  } 

--结束END--

本文标题: android开发中如何对图片进行处理

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

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

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

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

下载Word文档
猜你喜欢
  • android开发中如何对图片进行处理
    这篇文章给大家介绍android开发中如何对图片进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。创建一个Java类CircleImageView把下面的代码复制过去,报错的导包package de.hdodenh...
    99+
    2023-05-31
    android roi
  • Android中怎么对图片进行圆角处理
    本篇文章给大家分享的是有关Android中怎么对图片进行圆角处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。方法一:setXfermode法此种方式就是再new一个相同尺寸的...
    99+
    2023-05-31
    android roi %d
  • 如何在Android中利用ImageView.src对图片进行拉伸处理
    如何在Android中利用ImageView.src对图片进行拉伸处理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方法如下:<LinearLayout andro...
    99+
    2023-05-31
    imageview android age
  • Java 中如何对图片进行压缩处理
    问题背景 图片过大时,会造成页面卡顿甚至于报错,而且现在页面,接口,很多地儿都有报文传输的最大限制要求,另外不知道各位有没有遇到过页面渲染比较大的 base64 图片时,会非常的卡顿。所以,我们必须对用户上传的原始图片进行压缩处理。 为何...
    99+
    2023-08-31
    java 开发语言 压缩图片
  • Nginx中怎么对图片进行处理
    本篇文章给大家分享的是有关Nginx中怎么对图片进行处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Nginx图片处理一个网管员必备的数据处...
    99+
    2024-04-02
  • 如何在Android应用中对图片进行压缩
    本篇文章给大家分享的是有关如何在Android应用中对图片进行压缩,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、质量压缩法设置bitmap options属性,降低图片的质...
    99+
    2023-05-31
    android 中对 roi
  • 如何使用PHP对图片进行处理和操作?
    随着互联网的不断发展,图片已经成为人们在网上交流和传播信息的重要媒介。对于网站开发人员而言,对图片进行处理和操作是十分必要的。在众多的程序设计语言中,PHP是一门十分流行的语言,本文将介绍如何使用PHP对图片进行处理和操作。一、图片上传在网...
    99+
    2023-05-21
    PHP 图片处理 图片操作
  • 怎么java中使用Thumbnails对图片进行处理
    这篇文章给大家介绍怎么java中使用Thumbnails对图片进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Thumbnails支持:指定大小进行缩放按照比例进行缩放不按照比例,指定大小进行缩放旋转水印裁剪转化...
    99+
    2023-06-08
  • 使用Canvas怎么对图片进行处理
    这篇文章给大家介绍使用Canvas怎么对图片进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、主要API整个流程中所用到的主要Canvas API有:绘制图像: drawImage()获取图像数据: getIm...
    99+
    2023-06-09
  • Android应用中怎么对图片进行压缩
    Android应用中怎么对图片进行压缩?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为何要压缩体积的原因如果你的图片是要准备上传的,那动辄几M的大小肯定不行的,况且图片分辨率大...
    99+
    2023-05-31
    android roi
  • Android中怎么对cookie进行处理
    本篇文章给大家分享的是有关Android中怎么对cookie进行处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。android 客户端 Cookie处理Cookie,有时也用...
    99+
    2023-05-30
    android cookie
  • Android应用中是如何对登录进行处理的
    Android应用中是如何对登录进行处理的?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。先从核心代码开始看:public class GoLoginUtil...
    99+
    2023-05-31
    android roi
  • 如何进行PHP开发中表单的处理
    这篇文章将为大家详细讲解有关如何进行PHP开发中表单的处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我终究还是低估了“妹子”两个字对程序猿们的杀伤力,在无图说个杰宝的今天,竟然还能在没有...
    99+
    2023-06-17
  • PHP开发中如何优化图片处理和图形操作
    在Web开发中,图片处理和图形操作是非常常见的需求。合理优化图片处理和图形操作可以提升网站性能和用户体验。本文将介绍一些优化图片处理和图形操作的方法,并提供具体的代码示例。一、合理选择图片格式在网站中使用合适的图片格式可以减小图片文件的大小...
    99+
    2023-10-21
    图像优化:图片优化 性能优化:图形操作 编程技巧:PHP开发
  • PHP开发中如何优化图片处理和图像操作
    摘要:随着移动互联网的发展,图片处理和图像操作在Web开发中变得越来越重要。本文将介绍一些优化图片处理和图像操作的方法,涉及图片压缩、缩略图生成、图片水印等操作,并提供具体的PHP代码示例。一、图片压缩使用合适的图片格式选择合适的图片格式可...
    99+
    2023-10-21
    图像处理 PHP开发 图片优化
  • 如何在Android应用中使用C++对Bitmap对象进行处理
    这篇文章将为大家详细讲解有关如何在Android应用中使用C++对Bitmap对象进行处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。步骤如下:a.编写JNI接口函数//java接口函数p...
    99+
    2023-05-31
    android bitmap c++
  • Android大图片背景如何处理
    在Android中处理大图片背景有几种方法:1. 使用ImageView控件:在布局文件中使用ImageView来显示大图片背景,并...
    99+
    2023-09-22
    Android
  • Android项目中如何使用adapter对数据进行处理
    本篇文章给大家分享的是有关Android项目中如何使用adapter对数据进行处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:package com.cvte.ap...
    99+
    2023-05-31
    android adapter roi
  • PHP中如何进行人脸识别和图像处理应用开发?
    在当今数字化时代,图像处理技术已成为了一种必备的技能,而人脸识别技术则被广泛应用于各行各业。其中,PHP作为一门广泛应用于web开发的脚本语言,其在人脸识别和图像处理应用开发方面的技术初步成熟,而其开发工具和框架也在不断发展。本文将给大家介...
    99+
    2023-05-14
    人脸识别 图像处理 PHP
  • 如何在Android开发中利用Glide加载图片
    这期内容当中小编将会给大家带来有关如何在Android开发中利用Glide加载图片,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。添加依赖:compile 'com.github.bump...
    99+
    2023-05-31
    glide android roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作