1. 程式人生 > >Android仿微信圖片編輯庫,你想要的功能這裡都有

Android仿微信圖片編輯庫,你想要的功能這裡都有

最近專案需要,寫了一個和微信中圖片編輯功能類似的圖片編輯庫,除去問題操作上擯棄掉不方便的手勢操作外,其餘微信中的核心功能全部一致,保留了微信中塗鴉、馬賽克、文字等隨時隨著圖片縮放的功能,這點是我所找的庫都不提供的功能,也是我從零去完成這個圖片編輯庫的原因。

圖片編輯功能預覽

功能說明

這裡針對其中的幾個主要功能點進行一些簡要說明,如果大家想要詳細瞭解可以檢視Demo程式碼,已經類庫的原始碼。

1、塗鴉功能

塗鴉的路徑是使用Path物件記錄手勢路徑,

switch(event.getActionMasked()) {
    case MotionEvent.ACTION_DOWN:
        path.reset();
        path.moveTo(event.getX(), event.getY());
        break
; case MotionEvent.ACTION_MOVE: path.lineTo(event.getX(), event.getY()); break; case MotionEvent.ACTION_UP: // 新增到Path列表中 break; }

然後繪製到Canvas物件上,並給畫筆設定Width和Color。

2、馬賽克功能

馬賽克的路徑部分和塗鴉相同,這裡不用多說,主要是馬賽克如何生成,一個很簡單的辦法就是先把整張圖進行縮小,然後將其放大至現有大小繪製出時,其就會很模糊,但是這個模糊不是馬賽克效果,這時只需要為其指定一個Paint,並將Paint物件的filterBitmap設定為false即可。然後在和路徑合成便成立馬賽克筆觸。

// 儲存圖層
paint.setFilterBitmap(false);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
// 繪製路徑
// 繪製馬賽克全圖
// 恢復圖層

3、文字功能

文字功能相比塗鴉和馬賽克來說其實難很多,這裡使用的方式和微信的略有不同,如下:

文字貼圖

文字的縮放、旋轉和刪除都不是使用手勢方式,而是使用按鈕,這種方式比手勢的易用性高很多。

這裡每個文字貼圖都是一個子控制元件,相對於這個圖片編輯的底圖來說,底圖其實是一個ViewGroup,這個子控制元件在ViewGroup裡面旋轉縮放,擺放位置等。具體實現這裡不說了,三言兩語很難說清。

4、裁剪與旋轉

當時旋轉是最後做的,旋轉的加入讓整個專案陷入崩潰邊緣,所有操作都強行加入了選擇這個後來者,頭大,裁剪相對還不算問題,主要是動畫的問題比較多,因為要做到和微信極度接近,裁剪和旋轉動畫的效果也是基本還原微信效果。

當裁剪出某個區域後並不會將Bitmap物件進行裁剪,而是調整顯示區域使其模擬出裁剪的效果,以備還原到原圖,如下:

// 裁剪區域
canvas.clipRect(mClipWin.isClipping() ? mFrame : mClipFrame);

後記

目前這個類庫剛完成全部核心功能,很多細節還在不斷完善中。

相關推薦

Android仿圖片編輯功能這裡

最近專案需要,寫了一個和微信中圖片編輯功能類似的圖片編輯庫,除去問題操作上擯棄掉不方便的手勢操作外,其餘微信中的核心功能全部一致,保留了微信中塗鴉、馬賽克、文字等隨時隨著圖片縮放的功能,這點是我所找的庫都不提供的功能,也是我從零去完成這個圖片編輯庫的原因。

移動端適配這裡

移動端畫素的概念   移動端有兩種畫素的概念,一種是裝置物理畫素,另一種是裝置邏輯畫素,裝置邏輯畫素是與裝置物理畫素無關的。 比如,iPhone的螢幕解析度: iPhone5 :邏輯畫素解析度 320 * 568,物理畫素解析度 640 * 1136(裝

幹機加工學徒但是師傅不願意教?沒關係學的這裡!!

現代的科技越來越廣泛了,所以要做到與社會同步,就需要不斷的學習與進步,上一篇文章跟大家分享了數控機床發蘭克系統的常用指令及含義,但是光了解指令含義是無法進行程式設計加工的,還需要學會程式的編輯操作,雖然都是一些基礎,但是作為學徒工的你,想要更多的去學到師傅的手藝

Android使用Retrofit技術仿圖片上傳可以選擇多張圖片拍照上傳

Android 仿照微信發說說,既能實現拍照,選相簿,多圖案上傳 使用Retrofit技術。 使用方法:詳見部落格 專案的執行效果: 伺服器端接收檔案的action UploadFile.java @Controller p

Android 多張圖片展示仿圖片上傳可以選擇多張圖片

我們經常會遇到需要多張圖片展示上傳的需求 ,如圖 這樣的需求我已經遇到過多次,個人總結一下,希望大家多多指點,支援選擇多張圖片 佈局:一個GridView <com.zuihou.drunkenmonkey.widget.view.Di

Android 仿popuwindow彈窗呼叫只需要一個方法以及4.4系統popuwindow外部不響應解決辦法

對於popuwindow大家都熟悉,他給Dialog的區別就是外部可以點選消失,一些使用者提示、使用者指引基本上用的都是這個控制元件,我用這個控制元件實現了微信分享的下部彈窗,效果挺好,使用起來也比較流暢,佈局樣式,都可以根據自己的需求進行更改,很不錯的一個方法,希望能幫到大

Android仿朋友圈九宮格圖片展示自定義控制元件支援縮放動畫~

一直對微信朋友圈九宮格圖片顯示控制元件比較好奇,找到一篇介紹相關騷操作的部落格 部落格雖好但是不夠完美,缺少點選圖片預覽頁面和縮放動畫,作為一個不斷追求完美主義的人,我想把這個控制元件結合到專案中而不是單純作為一個控制元件。 下面是我的實現效果圖: (

Android 超高仿圖片多選、單選圖片剪下圖片預覽拍照等功能

實現了微信圖片選擇的所有功能 單選、多選 單選,沒有預覽功能。 多選,可以控制最大 選擇圖片數量 拍照 解決了三星拍照橫屏的bug 關閉拍照後,第一個item將不顯示拍照選項 預覽 開啟預覽功能後,點選圖片或右下角預覽進入預覽介面。 關

Android 超高仿圖片選擇器 圖片該這麽載入

主界面 asto 布局 sage comm equal ear 博文 細致 轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/39943731,本文出自:【張鴻洋的博客】1、概述關於手機圖片載入器,在當今

android之使用GridView+仿圖片上傳功能(附源代碼)

相冊 ada nbu [] for round pen fromfile idt   由於工作要求最近在使用GridView完成圖片的批量上傳功能,我的例子當中包含仿微信圖片上傳、拍照、本地選擇、相片裁剪等功能,如果有需要的朋友可以看一下,希望我的實際經驗能對您有所幫助。

Android 仿調用第三方應用導航(百度高德、騰訊)

detail decorview fcm onclick api 描述 log def repr 實現目標 先來一張微信功能截圖看看要做什麽 其實就是有一個目的地,點擊目的地的時候彈出可選擇的應用進行導航。 大腦動一下,要實現這個功能應該大體分成兩步: 底部彈出可選的地

android仿、QQ等聊天介面實現點選輸入框彈出軟鍵盤、點選其他區域收起軟鍵盤預設滑動至最低端

如圖所示,點選輸入框及選擇圖片和傳送按鈕時軟鍵盤顯示且不消失,點選其他區域,則隱藏軟鍵盤。 主要程式碼如下: override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { if (ev!!.getAction() ==

Android 超高仿圖片選擇器 圖片該這麼載入

                轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/39943731,本文出自:【張鴻洋的部落格】1、概述關於手機圖片載入器,在當今畫素隨隨便便破千萬的時代,一張圖片佔據的記憶體都相當可觀,作為高大尚程式猿的我們,

Android開發技巧——定製仿圖片裁剪控制元件

拍照——裁剪,或者是選擇圖片——裁剪,是我們設定頭像或上傳圖片時經常需要的一組操作。上篇講了Camera的使用,這篇講一下我對圖片裁剪的實現。 背景 下面的需求都來自產品。 裁剪圖片要像微信那樣,拖動和放大的是圖片,裁剪框不動。 裁剪框外的內容要有半透

Android 超高仿圖片選擇器 圖片該這麼載入

轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/39943731,本文出自:【張鴻洋的部落格】1、概述關於手機圖片載入器,在當今畫素隨隨便便破千萬的時代,一張圖片佔據的記憶體都相當可觀,作為高大尚程式猿的我們

Android仿QQ群頭像合成

原文地址:https://www.jb51.net/article/130296.htm 效果圖: 作為程式設計師,首先會評估下工作量吧。在產品眼裡,就是把圖片合成一起嘛,有啥難度嗎?所以工作時間決定了你能做成什麼樣吧 方案分析: 方案1、直接寫成佈局,然後按照不同的佈局載入不

Android 仿聯絡人Demo(自定義ViewViewgroup)

上週在某部落格發現博主分享了一篇很經典的程式---------聯絡人效果。感覺很神祕很強大,但在閱讀和理解博主的demo的同時也發現了一些冗餘和不完美。於是帶著寶寶的痛一咬牙自己開工了,大約花了一週的時間(當然我白天還得上班的),做出了這種效果。如下圖: now跟著

Android仿搜尋Recyclerview+關鍵字動態匹配篩選變色效果(Edittext+Recyclerview)

一、概述   我們要實現的是模仿微信的搜尋效果,通過監聽Edittext中文字的變化動態匹配Recyclerview列表中文字,重新整理列表,並將關鍵字變色顯示。   首先上圖,展示我們將要實現的效果(關鍵字是有顏色變化的,列表也有重新整理。我們的gif圖

Android 仿通訊錄功能好友排序 + 字母索引

一、效果圖展示 二、功能特點 1.好友排序:按照拼音順序對好友進行排序,相容英文數字符號等 2.字母索引:右側字母導航條,既可拖動也可點選,聯動ListView滑動 三、實現 接下來就讓我們一步步顯示這個效果吧。 1.右側字母索引的導航條 這個我們可

android仿圖片瀏覽器

專案中用到圖片瀏覽 拆分出來 以後方便使用 高仿微信圖片瀏覽器 module使用 rxjava + okhttp3 + fresco 所以專案中引用以後 會增大安裝包體積2m左右 如果你的專案中沒有使用rxjava 和 okhttp3 和fresco