中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android如何實現圖片生成卷角和圓角縮略圖的方法

發布時間:2021-05-21 13:47:06 來源:億速云 閱讀:246 作者:小新 欄目:移動開發

這篇文章給大家分享的是有關Android如何實現圖片生成卷角和圓角縮略圖的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在 Android 的一些界面中,有時候我們需要為一副圖片生成大小為 n * n 的縮略圖,有時候需要的縮略圖特殊一些,比如:

1、帶圓角的縮略圖:

如果我們需要帶圓角的縮略圖,但提供的圖片是 n * n 的正方形的圖片,該怎么辦?這時候可以在貼圖之前,先利用 Paint.setXfermode 方法來設置圖片疊加時的混合模式,從而達到目的。一般而言,使用方法如下:

Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XXX);
canvas.drawBitmap(srcBmp, rc, rc, paint);

關于 PorterDuff.Mode 的值,確定了 SrcBmp 和 DstBmp 交疊時像素的處理方式,其作用用一幅圖片展示如下:

Android如何實現圖片生成卷角和圓角縮略圖的方法

我們看出 SrcIn 這個模式,只保留 SrcBmp 和 DstBmp 直接的交集部分,并且只展現 SrcBmp 上這部分交集的內容。這個模式適合我們做帶圓角的縮略圖。我們先在 Canvas 上繪制一個實心圓角矩形,其他部分透明,然后用這個模式把縮略圖再繪制到 Canvas 上即可:

Bitmap roundThumbBitmap = Bitmap.createBitmap(
  rc.width(), rc.height(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(roundThumbBitmap);

Paint paint = new Paint();
paint.setColor(0xFFFF0000);  // 任何不透明的顏色均可。(作為掩碼色)
paint.setAntiAlias(true);   // 開啟抗鋸齒,防止圓角毛躁.

// 填充一個圓角矩形.
final float radius = 5.0f;
canvas.drawRoundRect(new RectF(rc), radius, radius, paint);

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(srcBmp, rc, rc, paint);

做出的效果如下:

Android如何實現圖片生成卷角和圓角縮略圖的方法

2、帶 “卷角+圓角” 的縮略圖:

有時候,我們需要為一張普通的圖片生成 “卷角+圓角” 效果的圖,像這樣:

Android如何實現圖片生成卷角和圓角縮略圖的方法

這時候,我們可以用兩張輔助圖來實現這個效果,一張底圖做掩碼,得到 “圓角+左上角切角” 的效果,然后用另一張圖片覆蓋在上面,得到 “灰色邊框+右上角卷角” 的效果,我們需要的兩張圖如下:

Android如何實現圖片生成卷角和圓角縮略圖的方法

代碼如下:

Bitmap rollAngleThumbBmp = Bitmap.createBitmap(rc.width(), rc.height(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(rollAngleThumbBmp);

Bitmap maskBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.mask);
Bitmap borderBmp = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.border)).getBitmap();

Paint paint = new Paint();
paint.setAntiAlias(true);

// 先貼掩碼圖.
canvas.drawBitmap(maskBmp, rc, rc, paint);

// 再用 SrcIn 的模式貼縮略圖.
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(srcBmp, rc, rc, paint);

// 先取消 Xfermode.
paint.setXfermode(null);

// 再貼邊框卷角圖.
canvas.drawBitmap(borderBmp, rc, rc, paint);

得到的效果如下(看起來有些毛躁,純屬是我切的 mask 和 border 圖片的問題,不是方法的問題):

Android如何實現圖片生成卷角和圓角縮略圖的方法

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

感謝各位的閱讀!關于“Android如何實現圖片生成卷角和圓角縮略圖的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通化市| 双鸭山市| 虹口区| 修文县| 安塞县| 上高县| 米林县| 石楼县| 乌兰察布市| 洞口县| 弥渡县| 吉隆县| 东平县| 青浦区| 临洮县| 平邑县| 那曲县| 云和县| 西畴县| 修水县| 崇信县| 鹤壁市| 旬邑县| 乌鲁木齐县| 监利县| 麻栗坡县| 若羌县| 望都县| 鄂伦春自治旗| 大渡口区| 阜阳市| 上高县| 汉沽区| 西吉县| 沅陵县| 东宁县| 哈密市| 安达市| 高要市| 霍邱县| 盐源县|