![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 图片处理
匆忙拥挤repeat
倦鸟就此散 余花怎不乱 物是人已非 落寞
红尘难看破 美梦成真否 镜花水月尔 迷惘
展开
-
Android 获取View的Bitmap
fun createBitmapFromView(view: View): Bitmap? { val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888) val canvas = Canvas(bitmap) canvas.drawColor(Color.WHITE) view.draw(canvas) return bitmap }原创 2021-12-03 11:08:58 · 778 阅读 · 0 评论 -
Android 根据目标宽度,将bitmap等比缩放。
/** * 根据目标宽度,将bitmap等比缩放。 * dstWidth 确定的 目标宽度 */ fun calculateBitmap(bitmap: Bitmap, dstWidth: Float): Bitmap { val width = bitmap.width val height = bitmap.height // 如果得到的宽或者高是0 返回原对象 if (width == 0 || height == 0) return bitmap原创 2021-12-03 11:19:49 · 3128 阅读 · 0 评论 -
Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果
// 图片模糊函数private fun blurByRenderScript(bitmap: Bitmap, radius: Int, view: ImageView) { val rs = RenderScript.create(context) val allocation = Allocation.createFromBitmap(rs, bitmap) val blur = ScriptIntrinsicBlur.create(rs, allocation.element原创 2021-10-26 12:02:45 · 1358 阅读 · 0 评论 -
Android layer-list 绘制圆环
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 底层圆;宽高属性在 api 23以上有效;一旦生效,若与目标view的宽高不一致,那看到的效果就不正常; 可以去掉 宽高配置,在目标view上配置上 相同的 宽高就行 --> <item android:wid原创 2021-08-27 11:19:51 · 689 阅读 · 0 评论 -
Android Floyd-Steinberg-Dithering、Stucki-dither 抖动处理
文章目录I. Floyd-Steinberg-DitheringI.i. 动态数组实现I.ii. 指针实现II. StuckiIII. 示例I. Floyd-Steinberg-DitheringGithub: Native-Floyd-Steinberg-Dithering该作者对Floyd-Steinberg-Dithering 的处理中,使用的是静态数组,容易栈溢出。这里,给出两种实现来避免。当然,若一次处理的位图信息过大,也是会堆溢出,OOM的。I.i. 动态数组实现cpp 代码如下。原创 2020-12-21 20:21:49 · 1384 阅读 · 0 评论 -
Android 获取View的原图,并以高度分段裁剪存储
最后一段高度,可能小于 singleHeight;这里的处理是,会先创建一个空白的 singleHeight高的图,再将最后一段内容绘制上去;结果是会造成留白。原创 2020-12-09 15:54:53 · 431 阅读 · 0 评论 -
Android - ColorMatrix 处理图像对比度
ColorMatrix 没有直接处理对比度的方法。内部有一个 4x5的矩阵数组: * <pre> * R’ = a*R + b*G + c*B + d*A + e; * G’ = f*R + g*G + h*B + i*A + j; * B’ = k*R + l*G + m*B + n*A + o; * A’ = p*R + q*G + r*B + s*A + t;</pre>原创 2020-11-23 17:52:28 · 882 阅读 · 3 评论 -
Android MaskFilter: BlurMaskFilter、EmbossMaskFilter
MaskFilter是一个基类对象,为Paint分配alpha通道的mask效果。 它的子类实现有:BlurMaskFilter、EmbossMaskFilter 主要被使用在Paint中:paint.setMaskFilter(maskFilter) BlurMaskFilter主要用于掩饰(mask)和模糊(blur) Paint所作用的对象上原创 2017-07-25 15:39:17 · 2130 阅读 · 0 评论 -
Android ColorFilter:PorterDuffColorFilter、LightingColorFilter、ColorMatrixColorFilter
效果就是可以在原图基础上,变换颜色。ImageView、ImageButton、Drawable 都有setColorFilter方法ColorFiltersetColorFilter(int color);setColorFilter(int clor, Mode mode); //mode 就是 PorterDuff.Mode 指示C原创 2015-08-12 15:32:31 · 1540 阅读 · 0 评论 -
Android 判断点是否在Path中(含不规则形状的Path)
RectF bounds = new RectF();path.computeBounds(bounds, true);Region region = new Region();region.setPath(path, new Region((int)bounds.left, (int)bounds.top,(int)bounds.right, (int)bounds.bottom原创 2016-10-12 20:46:08 · 6629 阅读 · 0 评论 -
Android Region范围、RegionIterator
Regionandroid.graphics.Region, 由0个或多个矩形 Rect组成 早前多用于 裁剪,即canvas.clipRegion(),后被标记为过时,推荐使用canvas.clipPath()来完成裁剪功能。 裁剪出来的图层是独立的,如果后续没有对图层做其它处理,则后续绘制将直接作用在裁剪出的图层区域中Region还有个比较好的用处就是:Android 判断点是否在Pat原创 2017-07-25 21:47:58 · 1591 阅读 · 0 评论 -
Android 使用RenderScript
文章目录参考gradle 配置使用java 代码进行图像模糊使用rs 脚本进行图像颜色反转参考官方文档gradle 配置build.gradle:android { defaultConfig { //renderscript 兼容配置; renderscriptTargetApi 14 renderscriptSupportModeEnable...原创 2018-11-15 14:20:39 · 2322 阅读 · 3 评论 -
Android 圆角图片,基于Glide4.9 的 BitmapTransformation,可任意设置某个角
Glide中的 Transformation,多次设置,后面的会覆盖前面的。如果 ImageView的 scaleType = “centerCrop”,会在 into()方法前自动加上 centerCrop(),即会调用 CenterCrop#transform()。原创 2019-06-12 16:49:52 · 7056 阅读 · 0 评论 -
Android 使用Glide4.9 压缩并保存图片(jpg/png/gif)到本地
项目中遇到,需要用户上传图片的场景。结果用户上传的、特别是拍摄后的图片,分辨率很大,长宽2000多3000甚至更高,一个图片5MB以上。 造成之后,从网络上加载这些图片,比较慢。所以,不得不在上传前进行压缩后,再上传。原创 2019-05-29 11:49:25 · 7042 阅读 · 0 评论 -
Android 自定义View 新年烟花、横幅动画
新年了,项目中要作个动画,如下效果图:整体要求实现:彩带乱飞,烟花冲天而起,烟花缩放,小鸡换图,小鸡飘移,横幅裁剪、展开等动画效果,全局大量使用了属性动画来实现我在实现过程中,横幅的裁剪计算,捣腾了比较久的时间,初版采用属性动画计算float的一个比率值,来配合每一帧的裁剪绘制,如下代码: private static class RollView extends原创 2017-01-22 18:19:03 · 5360 阅读 · 6 评论 -
Android 管理Bitmap内存 及 Bitmap.Config BitmapFactory.Options 说明
BitmapFactory.Options options = new BitmapFactory.Options();/*ARGB: alpha, red, green, blueALPHA_8 8位 1byte每像素1字节 按官方注释是说,只存alpha值,测试后发现,图片照样显示。。ARGB_4444 16位 2bytes 已过时 像素2字节 (argb各范围为原创 2015-06-09 17:36:45 · 1302 阅读 · 0 评论 -
Android Bitmap 变色
一张图是 a*b 像素, 即有 a*b个像素点//改变 bitmap 颜色private Bitmap sharkColor(Bitmap mBitmap) { int mBitmapWidth = mBitmap.getWidth(); int mBitmapHeight = mBitmap.getHeight(); int mArrayColorL原创 2015-06-09 17:56:41 · 1743 阅读 · 0 评论 -
Android 取view的cache图片
view.setDrawingCacheEnabled(true); //启用绘制缓存view.buildDrawingCache(); //可以不调用 get时会自动判断如果没有cache,会调用buildcacheBitmap drawingCache = view.getDrawingCache();view.setDrawingCacheEnabled(原创 2015-06-09 18:40:45 · 967 阅读 · 0 评论 -
Android Shader渲染器:BitmapShader图片渲染
public class BitmapShader extends ShaderBitmapShader, Shader家族的 专门处理图片渲染的构造方法:public BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY) bitmap:原图 tile直译为 瓷砖,瓦片。这里的Til原创 2015-07-14 17:42:43 · 2189 阅读 · 0 评论 -
Android ImageView.ScaleType说明
ImageView.ScaleTypepublic enum ScaleType { MATRIX (0), FIT_XY (1), FIT_START (2), FIT_CENTER (3),原创 2015-07-15 18:16:35 · 829 阅读 · 0 评论 -
Android Bitmap 倒影
public Bitmap invertedImg(View view) { //1. 倒立图 Matrix matrix = new Matrix(); matrix.preScale(1, -1); int w = mBitmap.getWidth(); int h = mBitmap.getHeight(); Bitmap reflection原创 2015-07-15 10:53:32 · 1140 阅读 · 0 评论 -
Android Shape 形状
Shape, 形状。将形状设置成View的背景Shape继承体系:Shape (android.graphics.drawable.shapes)----PathShape (android.graphics.drawable.shapes)----RectShape (android.graphics.drawable.shapes)--------ArcShape原创 2015-07-17 17:35:23 · 12607 阅读 · 1 评论 -
Android 缩放图片的几种方式说明
1. BitmapFactory.Options options.inSampleSize,它的取值应该是2的次方:1、2、4、8… 表示宽高都是原来的1/1, 1/2, 1/4, 1/8… 如果设置的值 < 1,那么效果就和 =1是一样的 再调用BitmapFactory的相关decode方法,传入options参数,即可得到一张缩小后的图片。 附上一段计算inSampleSize的方原创 2016-06-15 17:20:24 · 961 阅读 · 0 评论 -
Android Shader 颜色、图像渲染 paint.setXfermode
Shader Shader是一个基类,表示在绘制期间颜色的水平跨度 它的子类被嵌入在Paint中使用,调用paint.setShader(shader)。 除Bitmap外的其它对象,使用该Paint进行绘制时,将从shader中获得颜色Shader.TileMode 渲染模式public enum TileMode {原创 2015-07-16 18:16:05 · 3144 阅读 · 0 评论 -
Android 自定义View 使用ShapeDrawable加BitmapShader实现图片局部放大效果
一些说明:> BitmapShader中放置的Bitmap是原图的缩放后的> ShapeDrawable的setBounds() 仅仅是设置一块shape的外矩形区,如用英语表示:size-region>ShapeDrawable中图片默认draw的原点为:相对于图片自身的坐标(0,0)> ShapeDrawable如果要对图片进行矩阵变化...原创 2016-12-11 02:35:48 · 2527 阅读 · 0 评论 -
Android 自定义拼接图片,点击小图位置时,绘制在上层
这里将五张矩形图拼在同一图层,并使用paint.setXfermode,显示点击区域上的图层备注:如果使用圆形图片素材(即圆形外是透明背景),那么需要用圆形的碰撞检测。package com.stone.guaguaka.view;import android.content.Context;import android.graphics.Bitmap;im原创 2016-05-04 21:26:31 · 2066 阅读 · 1 评论 -
Android 仿美女撕衣服效果
因为我写demo的时候不是用一整屏幕来放置当前图片View的,且资源图也不小,所以用到了bitmap缩放代码注释比较详尽,直接上了package com.stone.guaguaka.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitma原创 2016-01-28 15:17:15 · 2762 阅读 · 0 评论 -
Android 自定义View 实现刮刮卡效果
主要思想:将一个view设计成多层:背景层,含中奖信息等;遮盖层,用于刮奖,使用关联一个Bitmap的Canvas在该Bitmap上,使用它的canvas.drawPath的api来处理 手势滑动(类似刮奖的动作)使用paint.setXfermode 来进行消除手势滑动区域/** * author : stone * email : aa8679原创 2015-07-28 16:32:43 · 1772 阅读 · 2 评论 -
Android 旋转图片
import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;原创 2014-02-10 15:45:11 · 3094 阅读 · 0 评论