Android - Image Effects教程
封面图
•
2025-11-06
•
Android开发
251
0
0
0
在 Android 中实现图像效果(Image Effects)通常指的是对图片进行滤镜、调整亮度/对比度、添加模糊、灰度、边缘检测等处理。你可以使用 Android 提供的 `Bitmap` 和 `Canvas` 类,或者借助第三方库如 [Glide](https://github.com/bumptech/glide)、[Android-ImageFilters](https://github.com/BradLarson/Android-ImageFilters)、[FFmpeg](https://ffmpeg.org/) 等来实现。 下面是一个基础的 **Android 图像效果教程**,涵盖以下内容: --- ## 🧩 1. 使用 Android 原生 API 实现图像效果 ### ✅ 1.1 加载 Bitmap ```java Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image); ``` ### ✅ 1.2 创建新的 Bitmap 进行处理 ```java Bitmap processedBitmap = Bitmap.createBitmap(originalBitmap.getWidth(), originalBitmap.getHeight(), originalBitmap.getConfig()); Canvas canvas = new Canvas(processedBitmap); Paint paint = new Paint(); ``` ### ✅ 1.3 应用灰度效果(Grayscale) ```java ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); // 将饱和度设为0,变成灰度图 ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm); paint.setColorFilter(f); canvas.drawBitmap(originalBitmap, 0, 0, paint); ``` ### ✅ 1.4 应用高斯模糊(Gaussian Blur) ```java Bitmap blurredBitmap = FastBlur.blur(originalBitmap, 10); // 使用 FastBlur 工具类 ``` > 💡 注意:`FastBlur` 是一个自定义工具类,可以参考 [这里](https://github.com/brunoangelo/FastBlur) 或自己实现。 --- ## 📦 2. 使用 Glide 添加图像效果 Glide 支持通过 `Transformations` 添加图像效果,例如灰度、圆角、模糊等。 ### ✅ 2.1 添加依赖(在 `build.gradle` 中): ```gradle implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' ``` ### ✅ 2.2 在代码中应用效果 ```java Glide.with(context) .load(R.drawable.your_image) .transform(new ColorFilterTransformation(ContextCompat.getColor(context, R.color.gray))) .into(imageView); ``` ### ✅ 2.3 自定义 Transformation(如模糊) ```java public class BlurTransformation extends BitmapTransformation { private final int radius; public BlurTransformation(int radius) { this.radius = radius; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { return FastBlur.blur(toTransform, radius); } @Override public void updateDiskCacheKey(MessageDigest messageDigest) { messageDigest.update(("blur" + radius).getBytes()); } } ``` 然后使用: ```java Glide.with(context) .load(R.drawable.your_image) .transform(new BlurTransformation(20)) .into(imageView); ``` --- ## 🎨 3. 使用 Android-ImageFilters 库 这个库提供了多种图像滤镜效果。 ### ✅ 3.1 添加依赖 ```gradle implementation 'com.bradburton:imagefilters:1.2.2' ``` ### ✅ 3.2 应用滤镜 ```java ImageFilterView imageFilterView = findViewById(R.id.imageFilterView); imageFilterView.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.your_image)); imageFilterView.setFilter(new FilterGrayscale()); ``` --- ## 🧪 4. 使用 FFmpeg 进行视频/图像处理(高级) 如果你需要更复杂的图像处理(如实时滤镜、视频处理),可以使用 FFmpeg。 ### ✅ 4.1 添加依赖 ```gradle implementation 'com.arthenica:ffmpeg-kit-full:4.5.1' ``` ### ✅ 4.2 执行命令 ```java FFmpegKit.execute("-i input.jpg -vf 'eq=brightness=0.2' output.jpg", new ExecuteCallback() { @Override public void apply(@NonNull Session session) { Log.d("FFmpeg", "Execution completed"); } }); ``` --- ## 📌 总结 | 方法 | 优点 | 缺点 | |------|------|------| | Android 原生 API | 灵活,无依赖 | 需要自己实现复杂效果 | | Glide | 简单易用,支持多种变换 | 不适合非常复杂的滤镜 | | Android-ImageFilters | 提供多种预设滤镜 | 功能有限 | | FFmpeg | 强大,支持视频和图像 | 学习曲线陡峭 | --- ## 📘 参考资料 - [Android 官方文档 - Bitmap](https://developer.android.com/reference/android/graphics/Bitmap) - [Glide GitHub](https://github.com/bumptech/glide) - [Android-ImageFilters GitHub](https://github.com/BradLarson/Android-ImageFilters) - [FFmpeg Kit for Android](https://github.com/tanersener/ffmpeg-kit) --- 如果你有具体的图像效果需求(比如边缘检测、色彩平衡、HDR 效果等),欢迎告诉我,我可以提供更详细的代码示例或推荐合适的库!
上一篇:
Android - Gestures Tutorial
下一篇:
Android开发 Wi-Fi 教程
标题录入,一次不能超过6条
留言
评论