當前位置:首頁 » 安卓系統 » bytebitmapandroid

bytebitmapandroid

發布時間: 2023-09-01 05:51:13

1. Android Byte[]數組轉Bitmap時圖像失真,有些花 請問怎麼解決 急急急 !! 求大神

你把轉換前後的值都用System.out()輸出來,查看一下數值有沒有變化

2. android如何把byte數據存到內存中並轉為bitmap,求高手~~~~~~~~~~~~~~~~~~~~~~~~~~~

import java.io.File;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class MainAct extends Activity {
private ImageView img;
//圖片路徑
private String filepath = "/sdcard/sample.jpg";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
img = (ImageView) findViewById(R.id.img);
File file = new File(filepath);
if (file.exists()) {
Bitmap bm = BitmapFactory.decodeFile(filepath);
//將圖片顯示到ImageView中
img.setImageBitmap(bm);
}
}
}

請參考

3. 怎麼給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的例子,可以看裡面的源碼


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

4. 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

5. android bitmap怎麼轉byte數組

ByteArrayOutputStreamstream=newByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[]byteArray=stream.toByteArray();

6. android byte[]轉化成bitmap 發生了錯誤,要如何解決呢大神快來呀 高懸賞

建議使用BitmapFactory的其他decode方法,如果是網路讀過來的流,最好在本地存成文件緩存,然後通過decodeFileDescriptor方法就沒這種問題了。
你可以看一下這里 http://www.thinksaas.cn/group/topic/203384/,也碰到了類似的問題

7. Android ,base64轉bitmap

1 把圖像文件讀如byte數組中。
2 然後調用EncodeBase64函數,把Byte數組傳入,函數返回Base64的字元串。
以上即可完成Base64轉換。

反方向
1 然後調用DecodeBase64函數,把Byte64字元串傳入,函數返回Byte數組。
2 把Bye數組內容寫入文件,文件名為bitmap點陣圖的bpm文件即可。

8. 安卓開發,Camera的PreviewCallBack獲取的byte[]怎麼轉為Bitmap

byte[]bb=newbyte[1024];

Bitmapbit=BitmapFactory.decodeByteArray(bb,0,bb.length);

9. Android-Bitmap復用時內存大小計算

主要是Bitmap的這兩個方法得到的Bitmap的值,會在內存復用體現。
如果不使用內存復用,這兩個方法是一樣的效果。

在通過復用 Bitmap 來解碼圖片時,那麼 getByteCount() 表示新解碼圖片佔用內存的大 小,getAllocationByteCount() 表示被復用 Bitmap真實佔用的內存大小。
比如:上面的圖片,黑色區域是當前Bitmap對象實際內存佔用大小,但是這部分內存中,只有紅色區域是新佔用的,而其他的區域是可以復用的但是沒被復用(即Bitmap中新的圖片只是佔用了8個大小,但是Bitmap實際大小其實是有20),那麼如果使用getByteCount()就只會返回被復用區域的內存大小,所以使用getByteCount()返回內存區域的大小,其實是小於等於實際大小的。
以為你Bitmap佔用內存大小,是由最大的圖片來決定的,如果放入一張更小的圖片,其實並不會減少Bitmap佔用的內存大小。
可以認為:
getByteCount()只是圖片的大小
getAllocationByteCount()是Bitmap的大小
因為Bitmap可以復用,所以Bitmap可以放入不同的圖片,當Bitmap放入更大的圖片的時候,就會佔用更大的內存,但是這個時候如果對Bitmap對象進行復用,放入一張小圖片,並不會改變Bitmap的大小。

熱點內容
項目編譯啥意思 發布:2025-02-02 00:25:13 瀏覽:221
逐鹿中原怎樣做掛機腳本 發布:2025-02-02 00:23:39 瀏覽:26
安卓系統跟蹤在哪裡 發布:2025-02-02 00:23:38 瀏覽:897
安卓uc瀏覽器怎麼安裝油猴 發布:2025-02-02 00:23:38 瀏覽:298
中商情報網資料庫 發布:2025-02-02 00:09:26 瀏覽:532
python獲取目錄下所有文件名 發布:2025-02-01 23:47:54 瀏覽:896
生物安全櫃配置哪些葯品 發布:2025-02-01 23:37:19 瀏覽:424
光遇安卓畫質為什麼沒有ios好 發布:2025-02-01 23:33:33 瀏覽:845
免費網店系統源碼 發布:2025-02-01 23:24:05 瀏覽:311
壓縮不原圖 發布:2025-02-01 23:23:30 瀏覽:926