Android影像處理技術(實現Android中的PS)(五),影像處理android

來源:互聯網
上載者:User

Android影像處理技術(實現Android中的PS)(五),影像處理android

好快,今天已經是關於Android圖片處理技術的第五個部落格了,有點多了,主要是為了照顧一下基礎比較薄弱的同學。不過我們都是用一個連貫的例子來講解的,並且提供了帶有詳細注釋的Demo,通過前四個博文的學習,想必大家對圖片處理技術有所瞭解了,從本博文開始,只貼出關鍵程式碼片段,其他無關緊要的代碼(比如xml布局檔案)就不貼了,我會附上一個Demo,大家可以下載參考。(PS:收取一個積分值是希望大家能珍惜下載的代碼,畢竟是我一行一行寫的,也算是對我自己工作的尊重吧,還請大家見諒。。。) 

好了,廢話不多說,開始我們今天的講解:使用畫筆風格Xfermode和Shader實現對圖片的處理。

首先,效果展示:

首先我們先介紹一下Xfermode:

然後再介紹一下Shader:

下面我們來貼出使用Xfermode改變圖片的主要代碼:

自訂XfermodeView:

public class XfermodesView extends View{    private Bitmap mBitmap,mOutBitmap;    private Paint mPaint;    public XfermodesView(Context context, AttributeSet attrs) {        super(context, attrs);        initView();    }    private void initView(){        //關掉硬體加速,否則達不到預期的效果;        setLayerType(LAYER_TYPE_SOFTWARE, null);        //從資源中載入圖片        mBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.a);        mOutBitmap=Bitmap.createBitmap(mBitmap.getWidth(),mBitmap.getHeight(),Config.ARGB_8888);//Config.ARGB_8888   防鋸齒        Canvas canvas=new Canvas(mOutBitmap);        mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);        //Dst        //這些都很簡單的了。。        canvas.drawRoundRect(new RectF(50, 50, mBitmap.getWidth(), mBitmap.getHeight()), 50, 50, mPaint);        //Src        //設定模式:        mPaint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));        canvas.drawBitmap(mBitmap, 0,0, mPaint);        //還原mPaint        mPaint.setXfermode(null);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawBitmap(mOutBitmap,0,0,null);    }}

我想,如果看過前幾個博文,這個代碼沒什麼難度。

然後再看看怎樣自訂ShaderView:

public class BitmapShaderView extends View {    private Bitmap mBitmap;    private Paint mPaint;    private BitmapShader mShader;    public BitmapShaderView(Context context, AttributeSet attrs) {        super(context, attrs);        mPaint=new Paint();        mBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.a);        //設定Shader模式:        mShader=new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);        //將設定好的shader綁定到畫筆mPaint上面        mPaint.setShader(mShader);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawCircle(200, 200, 50, mPaint);    }}

ok,結束。

最後,Demo地址:http://download.csdn.net/detail/nsgsbs/8538579

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.