日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android实现仿美图秀秀给图片加框

發(fā)布時(shí)間:2024/4/15 Android 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android实现仿美图秀秀给图片加框 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

// 花色邊框
?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);

??// 設(shè)置底圖為畫布
??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個(gè)邊角
??// 半徑
??float R = (0.8f * frameSize);
??// 先繪制四個(gè)邊角
??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);

??// 計(jì)算x軸上能畫圓的個(gè)數(shù)
??// 2R為一個(gè)圓的寬度,設(shè)定兩個(gè)圓之間預(yù)留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;// 少繪制一個(gè)圓防止顏色沖突
???break;
??case 1:
???count_x = count_x - 2;// 少繪制兩個(gè)圓防止顏色沖突
???break;
??case 2:
???break;
??}

??// 剩余空間
??float offset_x = (bitmapbg.getWidth() - 2 * frameSize - 2 * 2 * R - count_x
????* 2 * R);
??// 每兩個(gè)圓之間間隔
??float margin_x = offset_x / (count_x + 1);

??// 計(jì)算y軸上能畫圓的個(gè)數(shù)
??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個(gè)圓防止顏色沖突
???break;
??case 1:
???break;
??}
??// 剩余空間
??float offset_y = (bitmapbg.getHeight() - 2 * frameSize - 2 * 2 * R - count_y
????* 2 * R);
??// 每兩個(gè)圓之間間隔
??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;
?}

?

總結(jié)

以上是生活随笔為你收集整理的Android实现仿美图秀秀给图片加框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91亚洲精品久久久蜜桃借种 | 亚洲精品成人无码 | 狼性av懂色av禁果av | 久久dvd| 熟女少妇a性色生活片毛片 亚洲伊人成人网 | 欧美激情一区 | 国产九九在线 | jizz色| 牛牛av国产一区二区 | 国产99久久久国产精品免费看 | 熟女av一区二区 | 亚洲无码精品在线观看 | 亚洲成人网在线播放 | 欧美精品国产一区 | 欧美日韩不卡一区二区三区 | 欧美色图第一页 | 草草国产| 91资源在线观看 | 鲁丝片一区二区三区 | 在线无码va中文字幕无码 | 国产超碰人人 | 国产美女明星三级做爰 | 97国产精品久久 | 另类二区 | 欧美亚洲久久 | 午夜国产在线 | 亚洲国产精品久久 | 一本之道久久 | 视频一区在线观看 | 青青视频在线免费观看 | 中日韩在线观看视频 | 狼人综合av | 自拍亚洲综合 | 午夜三级在线 | 肉色欧美久久久久久久免费看 | 黄色在线观看视频网站 | 国产精品久久麻豆 | a男人天堂 | 日本xxxx色 | 欧美一区久久 | 国产黄频| 精品久久人人 | 很色的网站| 99性趣网| 欧美成人精品一区二区男人小说 | 色伊人 | 一二三毛片| 国产精品一二三四 | 骚虎av| 中文字幕五码 | 欧美精品在线一区 | 麻豆成人精品国产免费 | 欧美日韩国产亚洲一区 | 亚洲视频观看 | 欧美第1页 | 高清av免费 | 啪啪综合网 | 欧美黄色性 | 久操社区 | 国产免费一区二区三区在线观看 | 欧美亚洲另类图片 | 老司机精品视频网站 | 美女又爽又黄又免费 | jizzjizz国产 | 丁香网五月天 | 一进一出视频 | 亚洲天堂小说 | 高h喷汁呻吟3p | 露出调教羞耻91九色 | 黄色在线免费观看网站 | 丝袜老师扒开让我了一夜漫画 | 日夜夜操| 亚洲性综合 | 四虎在线免费观看视频 | 开心春色激情网 | www.男人天堂.com | 91九色论坛 | 欧美精品成人 | 国产一区二区麻豆 | 日韩成人免费在线观看 | 国产精品熟女久久久久久 | 干欧美少妇 | 国产让女高潮的av毛片 | 男人的天堂免费视频 | 日韩精品一区二区三区国语自制 | 91大神在线看 | 欧美激情视频一区二区三区在线播放 | 粉嫩欧美一区二区三区 | 国产三级网站 | 午夜福利电影一区 | 日韩丝袜一区 | 日日躁夜夜躁狠狠久久av | 黑丝久久 | 粗大的内捧猛烈进出在线视频 | 天天艹天天射 | 杨贵妃颤抖双乳呻吟求欢小说 | 国产91丝袜在线播放0 | 美女黄视频大全 | 欧美黄色性生活 |