日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。