欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 實(shí)現(xiàn)圖片生成卷角和圓角縮略圖的方法

 更新時(shí)間:2017年11月03日 11:04:17   作者:牧秦丶  
本篇文章主要介紹了Android 實(shí)現(xiàn)圖片生成卷角和圓角縮略圖的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

1、帶圓角的縮略圖:

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

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

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


我們看出 SrcIn 這個(gè)模式,只保留 SrcBmp 和 DstBmp 直接的交集部分,并且只展現(xiàn) SrcBmp 上這部分交集的內(nèi)容。這個(gè)模式適合我們做帶圓角的縮略圖。我們先在 Canvas 上繪制一個(gè)實(shí)心圓角矩形,其他部分透明,然后用這個(gè)模式把縮略圖再繪制到 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);   // 開啟抗鋸齒,防止圓角毛躁.

// 填充一個(gè)圓角矩形.
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);

做出的效果如下:


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

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


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

代碼如下:

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 圖片的問題,不是方法的問題):

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實(shí)現(xiàn)原生分享功能

    Android實(shí)現(xiàn)原生分享功能

    這篇文章主要介紹了Android實(shí)現(xiàn)原生分享功能,只能分享文字和圖片,不能單獨(dú)分享圖片或者文字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android開發(fā)中的MVC設(shè)計(jì)模式淺析

    Android開發(fā)中的MVC設(shè)計(jì)模式淺析

    這篇文章主要介紹了Android開發(fā)中的MVC設(shè)計(jì)模式淺析,本文講解了對Android開發(fā)中的MVC設(shè)計(jì)模式的理解,需要的朋友可以參考下
    2015-06-06
  • Android  onSaveInstanceState和onRestoreInstanceState觸發(fā)的時(shí)機(jī)

    Android onSaveInstanceState和onRestoreInstanceState觸發(fā)的時(shí)機(jī)

    這篇文章主要介紹了Android onSaveInstanceState和onRestoreInstanceState觸發(fā)的時(shí)機(jī)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • android12?SD如何動(dòng)態(tài)申請讀寫權(quán)限

    android12?SD如何動(dòng)態(tài)申請讀寫權(quán)限

    這篇文章主要給大家介紹了關(guān)于android12?SD如何動(dòng)態(tài)申請讀寫權(quán)限的相關(guān)資料,從Android?6.0開始,權(quán)限不再是在manifest?件中粘貼?下即可,這時(shí)候權(quán)限也正式?進(jìn)?家的視野,需要的朋友可以參考下
    2023-07-07
  • Android 實(shí)用工具之emulator介紹

    Android 實(shí)用工具之emulator介紹

    Android 實(shí)用工具之emulator介紹,需要的朋友可以參考一下
    2013-02-02
  • Opengl?ES之紋理貼圖使用示例

    Opengl?ES之紋理貼圖使用示例

    這篇文章主要為大家介紹了Opengl?ES之紋理貼圖使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解Kotlin協(xié)程的異常處理機(jī)制

    詳解Kotlin協(xié)程的異常處理機(jī)制

    協(xié)程會(huì)遇到各種異常情況,比如協(xié)程被取消、協(xié)程內(nèi)部發(fā)生錯(cuò)誤、協(xié)程之間的異常傳播等,這些異常情況需要我們正確地處理,否則可能會(huì)導(dǎo)致程序崩潰、資源泄露或者邏輯錯(cuò)誤,本文將介紹 Kotlin 協(xié)程的異常處理機(jī)制,需要的朋友可以參考下
    2023-09-09
  • Android實(shí)現(xiàn)手勢滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果(二)

    Android實(shí)現(xiàn)手勢滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果(二)

    這篇文章主要介紹了Android實(shí)現(xiàn)手勢滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果,實(shí)現(xiàn)圖片支持多點(diǎn)觸控,自由的進(jìn)行縮放、平移的注意事項(xiàng),感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android 邊播邊緩存的實(shí)現(xiàn)(MP4 未加密m3u8)

    Android 邊播邊緩存的實(shí)現(xiàn)(MP4 未加密m3u8)

    這篇文章主要介紹了Android 邊播邊緩存的實(shí)現(xiàn)(MP4 未加密m3u8),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 快速掌握Android屏幕的知識點(diǎn)

    快速掌握Android屏幕的知識點(diǎn)

    相信不少設(shè)計(jì)師和工程師都被安卓設(shè)備紛繁的屏幕搞得暈頭轉(zhuǎn)向,我既做UI設(shè)計(jì),也做過一點(diǎn)安卓界面布局,剛好對這塊內(nèi)容比較熟悉,所以在此我將此部分知識重新梳理出來分享給大家!有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11

最新評論