Android实现仿美图秀秀给图片加框
// 花色边框
public Bitmap getBitmapHuaSeBianKuang(Bitmap bitmap) {
float frameSize = 0.5f * getFrameSize(bitmap);
Matrix matrix = new Matrix();
// 用来做底图
Bitmap bitmapbg = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
// 设置底图为画布
Canvas canvas = new Canvas(bitmapbg);
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG
| Paint.FILTER_BITMAP_FLAG));
float scale_x = (bitmap.getWidth() - 2 * frameSize - 2) * 1f
/ (bitmap.getWidth());
float scale_y = (bitmap.getHeight() - 2 * frameSize - 2) * 1f
/ (bitmap.getHeight());
matrix.reset();
matrix.postScale(scale_x, scale_y);
// 对相片大小处理(减去边框的大小)
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setStrokeWidth(1);
paint.setStyle(Style.FILL);
// 绘制底图边框
canvas.drawRect(
new Rect(0, 0, bitmapbg.getWidth(), bitmapbg.getHeight()),
paint);
// 绘制花边
// 绘制4个边角
// 半径
float R = (0.8f * frameSize);
// 先绘制四个边角
paint.setColor(Color.YELLOW);
// 左上角
canvas.drawCircle(frameSize + R, frameSize, R, paint);
canvas.drawCircle(frameSize, frameSize + R, R, paint);
// 右上角
canvas.drawCircle(bitmapbg.getWidth() - frameSize - R, frameSize, R,
paint);
canvas.drawCircle(bitmapbg.getWidth() - frameSize, frameSize + R, R,
paint);
paint.setColor(Color.GREEN);
// 左下角
canvas.drawCircle(frameSize, bitmapbg.getHeight() - frameSize - R, R,
paint);
canvas.drawCircle(frameSize + R, bitmapbg.getHeight() - frameSize, R,
paint);
// 右下角
canvas.drawCircle(bitmapbg.getWidth() - frameSize - R,
bitmapbg.getHeight() - frameSize, R, paint);
canvas.drawCircle(bitmapbg.getWidth() - frameSize, bitmapbg.getHeight()
- frameSize - R, R, paint);
// 计算x轴上能画圆的个数
// 2R为一个圆的宽度,设定两个圆之间预留R的距离
int count_x = (int) ((bitmapbg.getWidth() - 2 * frameSize - 2 * 2 * R) / (2 * R));
switch (count_x % 3) {
case 0:
count_x = count_x - 1;// 少绘制一个圆防止颜色冲突
break;
case 1:
count_x = count_x - 2;// 少绘制两个圆防止颜色冲突
break;
case 2:
break;
}
// 剩余空间
float offset_x = (bitmapbg.getWidth() - 2 * frameSize - 2 * 2 * R - count_x
* 2 * R);
// 每两个圆之间间隔
float margin_x = offset_x / (count_x + 1);
// 计算y轴上能画圆的个数
int count_y = (int) ((bitmapbg.getHeight() - 2 * frameSize - 2 * 2 * R) / (2 * R));
switch (count_y % 3) {
case 0:
break;
case 2:
count_y = count_y - 1;// 少绘制1个圆防止颜色冲突
break;
case 1:
break;
}
// 剩余空间
float offset_y = (bitmapbg.getHeight() - 2 * frameSize - 2 * 2 * R - count_y
* 2 * R);
// 每两个圆之间间隔
float margin_y = offset_y / (count_y + 1);
float start_x = (frameSize + 2 * R + margin_x + R);
float start_y = (frameSize + 2 * R + margin_y + R);
float x = start_x;
int index = 1;
while (x < bitmap.getWidth()) {
int index2 = index % 3;
switch (index2) {
case 0:
paint.setColor(Color.YELLOW);
break;
case 1:
paint.setColor(Color.LTGRAY);
break;
case 2:
paint.setColor(Color.GREEN);
break;
}
index++;
canvas.drawCircle(x, frameSize, R, paint);
switch (index2) {
case 1:
paint.setColor(Color.YELLOW);
break;
case 2:
paint.setColor(Color.LTGRAY);
break;
case 0:
paint.setColor(Color.GREEN);
break;
}
canvas.drawCircle(x, bitmapbg.getHeight() - frameSize, R, paint);
x += R + margin_x + R;
}
float y = start_y;
int indexh = 1;
while (y < bitmap.getHeight()) {
int index2 = indexh % 3;
switch (index2) {
case 2:
paint.setColor(Color.GREEN);
break;
case 0:
paint.setColor(Color.YELLOW);
break;
case 1:
paint.setColor(Color.LTGRAY);
break;
}
indexh++;
canvas.drawCircle(frameSize, y, R, paint);
canvas.drawCircle(bitmapbg.getWidth() - frameSize, y, R, paint);
y += R + margin_y + R;
}
// 绘制灰色边框
paint.setColor(Color.GRAY);
canvas.drawRect(
new Rect((int) (frameSize), (int) (frameSize), bitmapbg
.getWidth() - (int) (frameSize), bitmapbg.getHeight()
- (int) (frameSize)), paint);
canvas.drawBitmap(bitmap, frameSize + 1, frameSize + 1, paint);
return bitmapbg;
}
Android实现仿美图秀秀给图片加框相关推荐
- 仿美图秀秀的图片剪切
先贴上美图秀秀原作的效果图,右边是我仿的效果图. 刚一眼打量过去,吸引我们的就是那四个大点.就从它开始吧,目前看来这个大点是一个图片,当点击下去的时候有加亮的效果,可能这又是一张图片.我们先不要考虑这 ...
- Android -- 小功能 仿美图秀秀(美颜相机)马赛克功能
前言: 之前公司有需求,需要对图片进行编辑,功能参照美图秀秀(或者美颜相机)的功能(带手指触动预览图功能.带放大缩小实施涂鸦功能),上网找了一堆源码,发现没有类似的,只能自己写 实现思路: 见源码,下 ...
- Android 反编译美图秀秀APK,开发自己的美颜apk
1.下载美图秀秀apk,使用反编译软件"Android逆向助手"提取里面的jni.java文件到我们的工程里 package com.mt.mtxx.image;public cl ...
- 美图秀秀-美化图片之【特效】界面设计
本文是特效界面设计,在美图秀秀的特效模块主要是实现图片添加滤镜效果,界面挺炫的. 界面包含黑边和虚化按钮,4种类型的滤镜,每种类型又包含许多具体滤镜效果,当我们点击时候开始处理图片 1.加载图片 se ...
- 美图秀秀美化图片之【智能优化】模块界面设计
美图秀秀的智能优化界面十分简单明了,它只包含了一张要进行处理的图片和一个bar,再就是取消操作和保存操作的2个按钮,先附一张界面图 一.点击美化图片首页[智能优化],进入具体操作界面 FWFuncti ...
- 美图秀秀-美化图片之【背景虚化】界面设计
本文是背景虚化界面设计,在美图秀秀的背景虚化模块主要是图像的模糊处理,可以按照圆形和线性进行模糊处理,并生成选定的形状. 在开发中遇到的误区 1.模糊形状使用UIImageView,遇到一些麻烦,即使 ...
- canvas节点无法导出图片_开源小程序,练手必备,仿“美图秀秀”处理图片。
微信小程序:图片裁剪.缩放.涂鸦.添加文字.拼长图.拼相框.表情包制作.便捷的图片编辑工具. 图片编辑小程序--HiPhoto 全能.便捷的图片编辑工具.实现了图片裁剪.添加文字.涂鸦.拼长图.拼相框 ...
- android Studio 编写美图秀秀的简单demo
借鉴在慕客网上的学习,给大家分享一下.目前在自学之中,没什么编程背景,JAVA也在自学之中.希望志同道合的朋友能留个言,大家一起交流. 首先在主界面创建了3个按钮,这三个按钮分别是通过不同的机理来 ...
- 美图秀秀美化图片之【边框】界面设计【重大更新】
在进行写边框前,需要通知大家一声,整个美化图片的界面开发已经完全重写,请大家先下载最新的项目[点击下载] 效果图 在前面的开发方法中由于没有考虑许多因素,造成viewcontroller代码混乱,所以 ...
最新文章
- 北航与西安交大计算机专业对比,北航和西安交大,谁的工科实力更强,该上哪一所大学呢?...
- 做事先做人 --- 我的十三条军规
- NTP时间服务器简介
- 招财铃:即时通信整合,
- php5.4与php5.2,升级php 5.2.14 到5.4.11版本报错问题
- sicp第一章部分习题解答
- 什么是自然语言处理,它如何工作?
- 字典和键值对换输出_Python知识小结—字典
- 一个32岁入门的70后程序员给我的启示
- idm下载器怎么下载网页视频?如何用idm自动下载网站文件?
- java promise实现,[Java教程]promise的理解和应用
- Error opening device
- 【kimol君的无聊小发明】—用python写论文下载器
- linux创建删除用户及vim简单操作
- 结构体 5.火星人足球赛
- Linux内核5.10编译 与调试
- VIC水文模型在windows环境下运行
- 功率曲线k值_功率曲线的修正
- 上海银行公积金查询需求
- 详解 python 中 numpy 函数 —— zeros()