當前位置:首頁 » 安卓系統 » android修改bitmap

android修改bitmap

發布時間: 2022-09-28 10:52:34

⑴ 怎麼給bitmap賦值 android

Bitmap是Android系統中的圖像處理的最重要的類之一。用它可以獲取圖像文件信息,對圖像進行旋轉,剪切,放大,縮小等操作。

Bitmap代表一張點陣圖,使我們在開發中常用的資源,下面就對Bitmap進行簡單的介紹。

Bitmap的獲取方法:

1、使用BitmapDrawable

BitmapDrawable里封裝的圖片就是一個Bitmap對象,我們要把Bitmap包裝成BitmapDrawable對象,可以調用BitmapDrawable的構造方法:

BItmapDrawbale drawable = new BItmapDrawable(bitmap);

如果要獲取BitmapDrawable所包裝的Bitmap對象,則可調用BitmapDrawable的getBitmap()方法:

Bitmap bitmap = drawbale.getBitmap();

2、Bitmap提供了一些靜態方法來創建Bitmap對象(僅列舉幾個):

createBitmap(Bitmap source,int x,int y,int width,int height):從原點陣圖source的指定坐標(x,y)開始,從中挖取寬width,高heigtht的一塊出來,創建新的Bitmap對象。

createScaledBitmap(Bitmap source,int width,ing height,boolean fliter):對源點陣圖進行縮放,縮放稱寬width,高heigth的新點陣圖。

createBitmap(int width,int height,Bitmap.Config config):創建一個寬width,高height的可變的新點陣圖。

createBitmap(Bitmap source, int x,int y,int width,int height ,Matrix m,boolean fliter):從源點陣圖source的指定坐標(x,y)開始,挖取寬width,高height的一塊來,創建新的Bitmap對象,並按照Matrix指定的規則進行變換。

3、通過對資源文件的解析獲取Bitmap對象

在這里就要用到BitmapFactory這個工具類,提供的方法如下:

decodeByteArray(byte[] data, int offset,int length):從指定位元組數組的offset位置開始,將長度為length的位元組數據解析成Bitmap對象。

decodeFIle(String pathName):從pathName指定的文件中解析、創建Bitmap對象。

decodeFileDescriptor(FileDescriptor fd):用於從FileDescriptor對應的文件中解析、創建Bitmap對象。

decodeResource(Resource res,int id):用於根據給定的資源ID從指定的資源文件中解析、創建Bitmap對象。

decodeStream(InputStream is):用於從指定輸入流中介解析、創建Bitmap對象。

但是,在系統不斷的解析、創建Bitmap的過程中,可能會由於內存小或其他原因,導致程序運行時發生OutOfMemory錯誤。

為此,Android為Bitmap提供了內存回收方法:

void recycle():強制回收Bitmap對象。

還有用於判斷Bitmap 對象是否被回收的方法:

boolean isRecycle();

如果Android應用需要訪問系統相冊,都需要藉助BitmapFactory解析、創建Bitmap對象。

4 從安卓無憂中看bitmap的幾種例子,下面是載入bitmap的例子,可以看裡面的源碼


如果您對答案滿意,請您關注一下名字中微博。

⑵ Android的Bitmap操作

src是你的原圖"你好"

下面就是得到原圖的一半寬度
Bitmap newBitmap = Bitmap.createBitmap(src, 0, 0, src.getWidth()/2, src.getHeight());

⑶ android 怎麼將bitmap進行尺寸壓縮

總結來看,圖片有三種存在形式:硬碟上時是file,網路傳輸時是stream,內存中是stream或bitmap,所謂的質量壓縮,它其實只能實現對file的影響,你可以把一個file轉成bitmap再轉成file,或者直接將一個bitmap轉成file時,這個最終的file是被壓縮過的,但是中間的bitmap並沒有被壓縮(或者說幾乎沒有被壓縮,我不確定),因為bigmap在內存中的大小是按像素計算的,也就是width * height,對於質量壓縮,並不會改變圖片的像素,所以就算質量被壓縮了,但是bitmap在內存的佔有率還是沒變小,但你做成file時,它確實變小了;

而尺寸壓縮由於是減小了圖片的像素,所以它直接對bitmap產生了影響,當然最終的file也是相對的變小了;

最後把自己總結的工具類貼出來:

[java] view plain
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

⑷ Android不可見View轉Bitmap

微信分享模板圖片

創建layout.xml並做布局調整,採用view轉bitmap的形式分享該圖片

view是不可見的,是否生成的圖片也是黑乎乎的一張呢? 如果不做處理結果就是黑乎乎!

好在我們還有measure、layout兩個工具

測量和位置調整完後,就可以看到生成的結果了。

ScrollView包裹下如何生成Bitmap?

ScrollView下生成Bitmap需要稍作處理:

① 對ScrollView進行measure測量,layout布局調整

② layout內容填充

fillShareContent(scrollView , shareContentParams);

這一步必須提前完成,否則layout中的控制項可能會有截斷的問題

③ 重新對ScrollView進行measure測量,layout布局調整

④ 網路圖片

⑤ 生成Bitmap

⑸ android bitmap 改變圖片大小

Optionsoptions1=newOptions();
options1.inJustDecodeBounds=true;
BitmapFactory.decodeFile(filePath,options1);
options1.inSampleSize=RegisterTool.calculateInSampleSize(options1,110,160);//110,160:轉換後的寬和高,具體值會有些出入
options1.inJustDecodeBounds=false;
Bitmapbitmap=BitmapFactory.decodeFile(filePath,options1);//filePath:文件路徑
(BitmapFactory.Optionsoptions,
intreqWidth,intreqHeight){

finalintheight=options.outHeight;
finalintwidth=options.outWidth;
intinSampleSize=1;

if(height>reqHeight||width>reqWidth){

finalintheightRatio=Math.round((float)height
/(float)reqHeight);
finalintwidthRatio=Math.round((float)width/(float)reqWidth);

inSampleSize=heightRatio<widthRatio?widthRatio:heightRatio;
}

returninSampleSize;
}
//壓縮圖片並將Bitmap保存到本地
FileOutputStreamout=newFileOutputStream(newFile(filePath));
saveBitmap.compress(Bitmap.CompressFormat.JPEG,60,out);//60代表壓縮40%

熱點內容
監控腳本實用 發布:2022-11-30 14:14:28 瀏覽:371
九陰真經顯血腳本 發布:2022-11-30 14:14:22 瀏覽:191
浪潮伺服器mgn口地址 發布:2022-11-30 14:13:41 瀏覽:791
linux鎖屏設置 發布:2022-11-30 14:08:20 瀏覽:887
演算法轉讓 發布:2022-11-30 14:07:24 瀏覽:16
我的世界為什麼從伺服器斷開連接 發布:2022-11-30 14:07:04 瀏覽:386
怎麼擠出母乳存儲袋中的空氣 發布:2022-11-30 14:05:32 瀏覽:27
linuxbin文件 發布:2022-11-30 14:01:19 瀏覽:474
購物網站源碼php 發布:2022-11-30 13:58:15 瀏覽:466
python執行java 發布:2022-11-30 13:56:23 瀏覽:936