bitmap裁剪android
『壹』 bitmap android怎麼按圓弧剪切
按圓弧剪切,可以用Photoshop。
打開需要裁剪成圓形的圖片。
右鍵單擊工具欄第一格,左鍵單擊選擇「橢圓選框工具」。
按住滑鼠左鍵和鍵盤上的Shift鍵,同時拖動滑鼠,選中需要留下的圓形部分。(註:如果要裁剪成橢圓形,則不需要按住Shift鍵。)
單擊「選擇」——「反向」。
不需要的部分被選中。
按鍵盤上的Del鍵,刪除不需要的部分。
單擊「選擇」——「反向」,選中需要留下的圓形部分。
單擊「編輯」——「剪切」。
單擊「新建」,背景內容選擇「透明」,然後單擊「確定」。
單擊「編輯」——「粘貼」,圖片就裁剪好了。之後只要單擊「文件」——「存儲」,就可以保存圖片了。
『貳』 Android超簡單實現炫酷的圖片展示效果
這里的實現原理很簡單,就是添加多個矩形路徑,並不斷的延長各個矩形路徑的寬度(通過onDraw方法的遞歸實現),然後在矩形路徑中繪制Bitmap即可。
1. 構建用於展示的Bitmap
這里我們選擇在onSizeChanged方法中初始化Bitmap,因為當控制項大小改變時方便我們重新計算所需展示Bitmap的大小。
2. 構建矩形裁剪區域並添加到Path中
3. 在對應的路徑中繪制出Bitmap
這里使用Canvas的clipPath方法將畫布裁切成路徑的形狀,然後在裁切後的畫布上繪制圖片。
4. 利用遞歸實現動畫效果
5. 當圖片完全顯示時替換圖片
圖片完全顯示也是cilpWidth>控制項寬度的時候。
掃描式圖片展示
『叄』 Android Bitmap理解
參考:
Android Bitmap 詳解:關於 Bitamp 你所要知道的一切
Android Bitmap(點陣圖)詳解
圖片是由大量且有限個數的像素點組成。把一張圖片通過bitmap的方式創建到內存中,實際上就是在內存中創建了一個叫做Bitmap的對象,然後把 圖片所有像素 解碼後的數據存放在Bitmap對象裡面,Bitmap就擁有了圖片的寬高,透明度,顏色值等數據。所以Bitmap的創建是通過BitmapFactory.decodeXxx()。
Config是Bitmap類中的枚舉類。像素由ARGB四個顏色通道組成。Config描述點陣圖中像素的存儲方式。 這里的存儲方式,無非就是對顏色通道和用多大的容器(bit)來存儲的排列組合。所以config會影響圖片透明度,佔用內存大小,保存成文件的大小,圖片質量。
Config的字母表示該配置存儲的像素的顏色通道,數字表示對應通道的數據用多少位來存儲。
ALPHA_8:表示只存儲alpha通道,使用8bit(1位元組)的內存(容器)來存儲一個像素。
RGB_565:表示存儲RGB三個通道,分別使用5bit,6bit,5bit的內存(容器)來存儲一個像素。
ARGB_4444:表示存儲ARGB四個通道,每個通道都是以4bit的內存(容器)來存儲一個像素。
ARGB_8888:表示存儲ARGB四個通道,每個通道都是以8bit的內存(容器)來存儲一個像素。
所以,ARGB_8888配置佔用內存最大,圖片質量最高。
圖片壓縮的一個思路就是降低圖片的配置。
總內存 = 寬的像素數 × 高的像素數 × 每個像素點佔用的大小
註:
1 byte = 8 bit
1 KB = 1024 byte
『肆』 Android 控制項 RoundedBitmapDrawable
RoundedBitmapDrawable 是 supportV4 下的一個類,有了它,顯示圓角和圓形圖片的情況下就不需要額外的第三方類庫了,還能和各種圖片載入庫配合使用。
點擊此處 可以看到官方的介紹。
setCircular(boolean circular) : 把圖片的形狀設為圓形;
setCornerRadius(float cornerRadius) : 設置圖片的圓角半徑。
這里貼一下源碼,更能清晰的知道它的實現:
至於具體的實現,閱讀源碼發現官方使用了 BitmapShader 來實現的圓角。
效果
首先來看下原圖和處理後效果,以及做一些擴展,如添加一個邊框
通過 RoundedBitmapDrawableFactory 傳遞要轉換bitmap 我就可以很簡單的生成一個如下圖的圓角圖片
可以看到我們僅僅只是改了一個屬性就實現了如下圖正圓形的轉換,但你可能已經發現圖像有一些變形,因為內部在接收到 circular == true 後先是對圖像進行了轉換為正方形的操作,這個操作是一個伸縮放操作,而不是裁剪,所以圖像發生了變形,所以在使用 setCircular 時最好能保證你的原圖時一個正方形的,如果不是的話,下面我們也會給出相應解決方案
我們自己進行對bitmap的裁剪來轉換成正方形,就解決了上面提到的拉伸問題,再繪制邊框就實現了一個如下帶邊框的正圓形圖片
RoundedBitmapDrawable 也可以直接設置轉換過程的
這些操作,來更好的工作
到這個里我們就可以把項目中的圓角圖片的控制項更換一下,平時記得多留意一下系統提供的一些API,可能會幫我們節省不少時間。
引用:
★★★ Android一些容易被忽略的類-RoundedBitmapDrawable
★★ Android 必知必會-使用 supportV4 的 RoundedBitmapDrawable 實現圓角
『伍』 bitmap縮放到指定大小-android中怎麼是bitmap縮小
如何對圖片進行縮放到適應屏幕大小呀/**顯示圖片,使用BitmapFactory()*path
*圖片SD卡路徑****/
privatevoidshow_Image(Stringpath){
//TODOAuto-generatedmethodstub
opts=new();
=2;//寬高設置成原來的1/2
Bitmapbit=newBitmapFactory().decodeFile(path,opts);
show_(bit);
還有很多屬性,你去查查吧,另外如果非要適應屏幕大小的話,你還需要獲取屏幕的大小,然後圖片大小跟屏幕大小比較,沒弄過一定要圖片跟屏幕大小填充滿的判空,就算填充滿,一定也會失真
android中怎麼是bitmap縮小/**Bitmap放大的方法*/
privatestaticBitmapbig(Bitmapbitmap){
Matrixmatrix=newMatrix();
(1.5f,1.5f);//長和寬放大縮小的比例
BitmapresizeBmp=(bitmap,0,0,(),(),matrix,true);
returnresizeBmp;
}
這里放大縮小的方法都有:
android縮放和壓縮的區別android縮放和壓縮圖片可以如下解釋虧蠢:
壓縮圖片
這里簡單的將一個圖片文件轉換為Bitmap,並且在轉換的過程中對圖片質量進行簡單壓縮:
(,intquality,FileOutputStreamfos);
注意這里的quality的范圍為0~100,經過測試如果這個值設置比較低的話圖片會非常不清晰,基本不可用,0~100的值可以參考類似Photoshop之類輸出圖片時選擇的圖片質量.
此方法只是單純對圖片質量進行處理,並不會改變其大小,如果需要改變圖片文件的大小,最好是使用縮放,這個可以在保證一定的圖片清晰度的情況下減少了圖片大小,畢竟手機屏幕就那麼點,你把2000px*1000px的圖片改為500px*250px在手機用戶看來也不會有太嚴重的不適感,而如果你只設置圖片的quality想來改變文件大小,你最後會發現得到的是一個2000px*1000px的幾個色塊.
縮放圖片
先提代碼看看:
[java]viewplain
/**
*保持長寬比縮小Bitmap
*
*@parambitmap
*@parammaxWidth
*@parammaxHeight
*@return
*/
publicBitmapresizeBitmap(Bitmapbitmap,intmaxWidth,intmaxHeight){
intoriginWidth=();
intoriginHeight=();
//noneedtoresize
if(originWidth<maxWidth&&originHeight<maxHeight){
returnbitmap;
}
intwidth=originWidth;
intheight=originHeight;
//若圖片過寬,則保持長寬比縮放圖片
if(originWidth>maxWidth){
width=maxWidth;
doublei=originWidth*1.0/maxWidth;
height=(int)(originHeight/i);
bitmap=(bitmap,width,height,false);
}
//若圖片過長,則從上端截取
if(height>maxHeight){
height=maxHeight;
bitmap=(bitmap,0,0,width,height);
}
//Log.i(TAG,width+"width");
//Log.i(TAG,height+"height");
returnbitmap;
}
這里演掘空瞎示是將圖片縮小到一個max范圍內,而不是直接將變成硬性的變成某個尺寸的圖片,因為一般來說這種設置max的方式符合大部分需要,如果必須將圖片變成某個指定尺寸可以直接使用方法,也是下面要介紹的.
此函數主要就是使用了Bitmap的兩個靜態方法,一個是:
(Bitmapsrc,intdstWidth,intdstHeight,booleanfilter)
此方法就會把一個Bitmap圖片縮放成指定的尺寸.