Android 图片处理特效

Android图片处理特效与高斯模糊算法实战源码 Android提供了丰富的图像处理类,开发者可以利用这些类实现各种图像处理功能。核心的类包括BitmapCanvasPaint和Matrix等。Bitmap类用于处理图像的像素数据,而Canvas类可以看作是一个画布,用于在Bitmap上进行绘图操作。Paint类负责定义绘图时使用的颜色、样式、字体等属性。Matrix类则可以对图像进行平移、旋转、缩放等变换操作。例如,可以用于创建一个新的位图对象;方法可以将位图绘制到画布上; 阅读详情
 

Android --- 图片处理的方法

转换 -  drawable To  bitmap

缩放 -  Zoom

圆角 -  Round Corner

倒影 -  Reflected


bitmapPrcess  code:

package com.learn.games;  
  1.   
  2. import android.graphics.Bitmap;  
  3. import android.graphics.Canvas;  
  4. import android.graphics.LinearGradient;  
  5. import android.graphics.Matrix;  
  6. import android.graphics.Paint;  
  7. import android.graphics.PixelFormat;  
  8. import android.graphics.PorterDuffXfermode;  
  9. import android.graphics.Rect;  
  10. import android.graphics.RectF;  
  11. import android.graphics.Bitmap.Config;  
  12. import android.graphics.PorterDuff.Mode;  
  13. import android.graphics.Shader.TileMode;  
  14. import android.graphics.drawable.Drawable;  
  15.   
  16. public class bitmapProcess {  
  17.   
  18.     // zoom   
  19.     public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h){  
  20.         int width = bitmap.getWidth();  
  21.         int height = bitmap.getHeight();  
  22.         Matrix matrix = new Matrix();  
  23.           
  24.         float scaleWidth = w/(float)width;  
  25.         float scaleHeight = h/(float)height;  
  26.         matrix.postScale(scaleWidth, scaleHeight);  
  27.           
  28.         Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);  
  29.         return bitmap2;       
  30.     }  
  31.       
  32.       
  33.     // drawable to bitmap   
  34.     public static Bitmap drawable2Bitmap(Drawable drawable){  
  35.         int width = drawable.getIntrinsicHeight();  
  36.         int height = drawable.getIntrinsicHeight();  
  37.           
  38.         Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity()   
  39.                 != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);  
  40.           
  41.         Canvas canvas = new Canvas(bitmap);  
  42.         drawable.setBounds(0, 0, width, height);  
  43.         drawable.draw(canvas);  
  44.           
  45.         return bitmap;  
  46.     }  
  47.       
  48.       
  49.     // Round Corner Bitmap   
  50.     public static Bitmap getRoundCornerBitmap(Bitmap bitmap, float roundPX){  
  51.         int width = bitmap.getWidth();  
  52.         int height = bitmap.getHeight();  
  53.           
  54.         Bitmap bitmap2 = Bitmap.createBitmap(width, height, Config.ARGB_8888);  
  55.         Canvas canvas = new Canvas(bitmap2);  
  56.           
  57.         final int color = 0xff424242;  
  58.         final Paint paint = new Paint();  
  59.         final Rect rect = new Rect(0, 0, width, height);  
  60.         final RectF rectF = new RectF(rect);  
  61.   
  62.         paint.setColor(color);  
  63.         paint.setAntiAlias(true);  
  64.         canvas.drawARGB(0, 0, 0, 0);  
  65.         canvas.drawRoundRect(rectF, roundPX, roundPX, paint);  
  66.           
  67.         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
  68.         canvas.drawBitmap(bitmap, rect, rect, paint);  
  69.           
  70.         return bitmap2;  
  71.     }  
  72.       
  73.     // Reflect Bitmap   
  74.     public static Bitmap createReflectedBitmap(Bitmap bitmap){  
  75.         final int reflectedGap = 4;  
  76.         int width = bitmap.getWidth();  
  77.         int height = bitmap.getHeight();  
  78.           
  79.         Matrix matrix = new Matrix();  
  80.         matrix.preScale(1, -1);  
  81.           
  82.         Bitmap reflectedImage = Bitmap.createBitmap(bitmap, 0, height/2, width, height/2, matrix, false);  
  83.         Bitmap reflectedBitmap = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);  
  84.           
  85.         Canvas canvas = new Canvas(reflectedBitmap);  
  86.         canvas.drawBitmap(bitmap, 0, 0, null);  
  87.         Paint defaultPaint = new Paint();  
  88.         canvas.drawRect(0, height, width, height + reflectedGap, defaultPaint);  
  89.         canvas.drawBitmap(reflectedImage, 0, height + reflectedGap, null);  
  90.           
  91.         Paint paint = new Paint();  
  92.         LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,  
  93.                                 reflectedBitmap.getHeight() + reflectedGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);  
  94.         paint.setShader(shader);  
  95.         paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
  96.         canvas.drawRect(0, height, width, reflectedBitmap.getHeight() + reflectedGap, paint);  
  97.           
  98.         return reflectedBitmap;  
  99.     }  
  100.       
  101. }  

Java Code:

package com.learn.games;  
  1.   
  2. import android.app.Activity;  
  3. import android.graphics.Bitmap;  
  4. import android.graphics.drawable.BitmapDrawable;  
  5. import android.graphics.drawable.Drawable;  
  6. import android.os.Bundle;  
  7. import android.widget.ImageView;  
  8.   
  9. public class MyBitmapProcessActivity extends Activity {  
  10.     private ImageView imgView1;  
  11.     private ImageView imgView2;  
  12.     private ImageView imgView3;  
  13.     private ImageView imgView4;  
  14.       
  15.     /** Called when the activity is first created. */  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.           
  21.         drawBitmap();  
  22.     }  
  23.       
  24.       
  25.     private void drawBitmap(){  
  26.         imgView1 = (ImageView)findViewById(R.id.imgView1);  
  27.         imgView2 = (ImageView)findViewById(R.id.imgView2);  
  28.         imgView3 = (ImageView)findViewById(R.id.imgView3);  
  29.         imgView4 = (ImageView)findViewById(R.id.imgView4);  
  30.           
  31.         Drawable drawable = this.getWallpaper();  
  32.           
  33.         Bitmap bitmap = bitmapProcess.drawable2Bitmap(drawable);                        // drawable to bitmap   
  34.         Bitmap zoomBitmap = bitmapProcess.zoomBitmap(bitmap, 100, 100);                 // zoom    
  35.         Bitmap roundBitmap = bitmapProcess.getRoundCornerBitmap(zoomBitmap, 10.0f);     // round corner    
  36.         Bitmap reflectedBitmap = bitmapProcess.createReflectedBitmap(zoomBitmap);       // reflect bitmap   
  37.           
  38.         // drawable to bitmap   
  39.         imgView1.setImageBitmap(bitmap);  
  40.         imgView2.setImageBitmap(zoomBitmap);  
  41.         imgView3.setImageBitmap(roundBitmap);  
  42.         imgView4.setImageBitmap(reflectedBitmap);  
  43.           
  44.         // bitmap to drawable   
  45.         Drawable roundDrawable = new BitmapDrawable(roundBitmap);  
  46.         Drawable reflectedDrawable = new BitmapDrawable(reflectedBitmap);  
  47.         imgView1.setBackgroundDrawable(roundDrawable);  
  48.         imgView2.setBackgroundDrawable(reflectedDrawable);  
  49.     }  
  50. }  

XML:

<?xml version="1.0" encoding="utf-8"?>  
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:orientation="vertical"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     >  
  6.    
  7.      <ImageView android:id="@+id/imgView1"  
  8.         android:layout_width="wrap_content"   
  9.         android:layout_height="wrap_content"/>  
  10.           
  11.           
  12.     <ImageView android:id="@+id/imgView2"  
  13.         android:layout_width="wrap_content"   
  14.         android:layout_height="wrap_content"/>  
  15.       
  16.     <ImageView android:id="@+id/imgView3"  
  17.         android:layout_width="wrap_content"   
  18.         android:layout_height="wrap_content"/>  
  19.           
  20.           
  21.     <ImageView android:id="@+id/imgView4"  
  22.         android:layout_width="wrap_content"   
  23.         android:layout_height="wrap_content"/>  
  24.           
  25. </LinearLayout>  

效果图:

drawable2bitmap


zoom


round corner


reflected bitmap



android Bitmap特效处理 代码是关于bitmap图形特效处理的。有黑白特效、底片特效、浮雕特效、模糊特效、锐化特效、怀旧特效。 立即下载

相关推荐

BLDC六步换相驱动实战:从霍尔真值表到PWM调速的代码实现

本文详细解析了BLDC六步换相驱动原理,从霍尔真值表解读到PWM调速的代码实现,提供了基于STM32的实战方案。重点介绍了霍尔信号解码、换相状态机设计以及PWM动态调速策略,帮助开发者快速掌握无刷电机驱动技术。

weixin_28273593的博客 212

android图片效果处理

android图片特效处理:底片 老照片 浮雕 高斯糊化

HPCoder的博客 1182

Vivado SDK中LWIP库版本冲突与RTL8211FDI兼容性实战解析

本文深入解析Vivado 2019.1 SDK中LWIP 1.0库与RTL8211FDI千兆PHY芯片的版本冲突问题,并提供实战解决方案。通过手动移植高版本LWIP库、整合第三方驱动及优化BSP配置,有效解决了以太网通信兼容性问题,确保千兆性能稳定运行。

ios99的博客 276

Android 图片特效处理:drawBitmapMesh——图像扭曲+动感

最近学了好多绘图啊,图片处理啊之类的,想着学全面一点,就又研究了一下drawBitmapMesh,drawBitmapMesh也是在Canvas画布上进行使用的,它具有能够使图片扭曲变形的效果,感觉有点像哈哈镜,只不过哈哈镜是直接照出来的效果,而drawBitmapMesh是通过改变它所有点的坐标位置改变图像的。drawBitmapMesh核心原理  我们使用drawBitmapMesh是通过这行代

danfengw的博客 8864

速腾16线激光雷达(RS-16)在ubuntu18.04系统下跑SC-A-LOAM算法

说明: 简要记录一下速腾16线激光雷达即RS-16在ubuntu18.04系统下跑SC-A-LOAM算法的过程,因为SC-A-LOAM算法源码不支持RS雷达的数据,大致思想就是先将rs雷达发布的激光数据转换为velodyne类型的数据,考虑到接下来还要基于RS-16实时运行SC-A-LOAM算法,这里提前将RS_SDK驱动安装好。 1 搭建SC-A-LOAM算法运行环境 首先需要在电脑上搭建SC-A-LOAM算法的运行环境,见文章《ubuntu18.04搭建SC-A-LOAM环境并运行》 本文所使用的系统架

超爱吃小蛋糕的66的博客 2373

2025统计建模大赛完整论文

参赛队号:(参赛队无须填写,参赛队号由大赛官网自动生成)2025年(第十一届)全国大学生统计建模大赛参 赛 作 品参赛学校:XXXXXX大学论文题目:海洋叶绿素含量影响因素与预测——基于机器学习与大数据分析预测参赛队员:指导老师:国家知识产权局 统计分析成果 知识产权统计数据公开查询指引(2024版)随着全球气候变化的加剧,海洋碳汇的作用愈发受到重视,尤其是海洋生物通过光合作用吸收二氧化碳的过程,对于全球碳循环和温室气体减排具有重要意义。

2301_79579117的博客 9319

android 滤镜lomo,图像滤镜艺术---LOMO Filter

private Bitmap LOMOFilterProcess(Bitmap src){Bitmap srcBitmap = new Bitmap(src);Bitmap dst = new Bitmap(src);int w = dst.Width;int h = dst.Height;BitmapData dstData = dst.LockBits(new Rectangle(0, 0, ...

weixin_32190377的博客 276

不用Root也能抓包?Android高版本HTTPS抓包的3种替代方案(含Charles技巧)

本文针对Android高版本HTTPS抓包难题,提供了三种无需Root权限的实战解决方案:利用VirtualXposed等虚拟沙盒环境、配置Postern等系统级代理工具,以及通过修改应用源码或网络安全配置。文章还详细解析了Charles抓包工具在非Root环境下的高级配置与排错技巧,帮助开发者在遵守安全规范的前提下,有效进行网络调试与监控。

http9protocoller的博客 648

AcrylicView MAUI:打造跨平台亚克力效果视图教程

AcrylicView MAUI:打造跨平台亚克力效果视图教程 1. 项目介绍 AcrylicView MAUI 是一个为 .NET Multi-platform App UI (MAUI) 平台量身定制的组件库,它提供了类似于Windows 10的亚克力材质效果,让您的应用程序界面更加美观和现代。该组件兼容Windows、Android、iOS以及macOS,为开发者带来一致的视觉体验。通过 A...

gitblog_00095的博客 859

RagFlow 文档解析

RAGFlow 的设计哲学是“高质量输入,高质量输出”,它通过提供可解释性和可控性的生成结果,让用户能够信任并依赖于系统提供的答案。

weixin_43008312的博客 3999

YOLO11改进策略【独家融合改进】| EfficientViMBlock + LGAG + DySample

通过学习采样来学习上采样DySample。

Limiiiing的博客 364

Android 滤镜效果不同实现方式

1.使用 Android 原生画笔 colorMatrix 灰度图片 fun greyBitmap(originBitmap: Bitmap): Bitmap { val newBitmap = Bitmap.createBitmap(originBitmap.width, originBitmap.height, Bitmap.Config.ARGB_8888) val canvas = Canvas(newBitmap) val c

小菜的OnePiece的博客 632

Spring AI 项目实战(十二):Spring Boot +AI + DeepSeek + 百度OCR 公司发票智能处理系统的技术实践(附完整源码)

本文介绍了基于百度OCR API与DeepSeek AI的发票智能处理系统,通过整合AI技术实现发票识别、信息提取和验证的全流程自动化。系统采用Spring Boot 3.2.0架构,结合百度OCR的高精度图像识别和DeepSeek的语义理解能力,显著提升了发票处理效率与准确率。关键技术包括多模型融合、智能错误纠正和自适应学习机制,实现了95%以上的识别准确率,将传统处理效率提升90%以上。该系统为数字化转型中的企业财务管理提供了智能化解决方案,具备高精度识别、实时处理、智能验证等核心优势。

博客 1628

Android 图片处理特效,安卓客户端开发面试题目

public static Bitmap createReflectedBitmap(Bitmap bitmap){final int reflectedGap = 4;int width = bitmap.getWidth();int height = bitmap.getHeight();Matrix matrix = new Matrix();matrix.preScale(1, -1);Bitmap reflectedImage = Bitmap.createBitmap(bitmap, 0, he

m0_60607971的博客 693

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java安卓图片处理_Android中几种图片特效的处理的实现方法

Android中几种图片特效的处理这里有放大缩小图片,获得圆角图片,获得带倒影图片的几种方法及实现代码,package com.android.tutor;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.LinearGradient;import android.graphi...

weixin_39858132的博客 160

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

2024年安卓最全Android 图片处理特效,2024年最新面试经历怎么说

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从哪里入手去学习,对此我整理了一些资料如果你熟练掌握以下列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84563220的博客 763

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java安卓图片处理_安卓中几种图片特效的处理的实现方法

安卓中几种图片特效的处理这里有放大缩小图片,获得圆角图片,获得带倒影图片的几种方法及实现代码,package com.android.tutor;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.LinearGradient;import android.graphics.Ma...

weixin_42452301的博客 223

Android 图片处理特效,Android技术图谱

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

m0_60666841的博客 321

浅谈android中图片处理之图形变换特效Matrix(四)

今天,我们就来谈下android中图片的变形的特效,在上讲博客中我们谈到android中图片中的色彩特效来实现的。改变它的颜色主要通过ColorMatrix类来实现。 现在今天所讲的图片变形的特效主要就是通过Matrix类来实现,我们通过上篇博客知道,改变色彩特效,主要是通过ColorMatrxi矩阵的系数,以及每个像素点上所对应的颜色偏移量。而今天的图形变换与那个也是非常的类似。它是一个3*3

Mikyou的专栏 8502

Android 图片处理特效集锦

博客地址:http://www.cnblogs.com/bill-joy/archive/2012/06/29/2570279.html

Lewis的专栏 724

浅谈android中图片处理之色彩特效处理ColorMatrix(三)

在android开发中对图片处理很是频繁,其中对图片的颜色处理就是很常见的一种。我们经常看到一些类似美图秀秀,美颜相机的app,为什么那么黑的人拍出来是确实那么地白呢?长的那么那个(丑)的人,用美颜相机拍出来的看起来也有那么回事(拍出来就感觉挺漂亮)。就像网上有个段子,有钱的都去韩国了,没钱都用ps了。韩国的就去整形,中国的就用ps.这些话虽然是调侃,但是从某种程度上来说像类似美图秀秀,美颜相机a

Mikyou的专栏 2万+

Android 图片处理特效,Android开发经典实战

import android.graphics.Bitmap.Config; import android.graphics.PorterDuff.Mode; import android.graphics.Shader.TileMode; import android.graphics.drawable.Drawable; public class bitmapProcess { // zoom p..

m0_64382950的博客 94

android Bimtap 各种图片处理方法、图片特效

原帖地址:http://gundumw100.iteye.com/blog/849729 Java代码   //压缩图片大小       public static Bitmap compressImage(Bitmap image) {              ByteArrayOutputStream baos = new ByteArrayOutput

aoshiwenrou的专栏 1490

Android 图片处理特效,附大厂真题面经

int height = bitmap.getHeight(); Matrix matrix = new Matrix(); float scaleWidth = w/(float)width; float scaleHeight = h/(float)height; matrix.postScale(scaleWidth, scaleHeight)..

m0_66145114的博客 102
上一篇: Android Activity界面切换动画
下一篇: Android adapter概括
cding1818
博客等级 码龄17年 963粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值