導航:首頁 > 操作系統 > androidbitmap保存文件

androidbitmap保存文件

發布時間:2022-12-20 14:49:48

『壹』 android圖像繪制——畫布保存為圖片

解釋:

1、首先創建一個Bitmap圖片,並指定大小;

2、在該圖片上創建一個新的畫布Canvas,然後在畫布上繪制,並保存即可;

3、需要保存的目錄File,注意如果寫的目錄如「/sdcard/akai/」如果不存在的話,要先創建(file.mkdirs()),否則FileOutputStream會報錯No found;

4、需要添加許可權:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

什麼是畫布呢 其實通過字面意思的理解就是用來繪畫的地方,那麼android里的畫布是神馬樣子的呢?

在自定義畫布中常用到下面3個類

Canvas

這些繪圖方法中的每一個都需要指定一個Paint對象來渲染它

Paint

Paint也稱為"刷子",Paint可以指定如何將基本圖形繪制到點陣圖上。

Paint類相當於一個筆刷和調色板。它可以選擇如何使用上面描述的draw方法來渲染繪 制在畫布上的基本圖形。通過修改Paint對象,可以在繪圖的時候控制顏色、樣式、字體和特殊效果。最簡單地,setColor可以讓你選擇一個Paint的顏色,而Paint對象的樣式(使用setStyle控制)則可以決定是繪制繪圖對象的輪廓(STROKE),還是只填充每一部 分(FILL),或者是兩者都做(STROKE_AND_FILL)除了這些簡單的控制之外,Paint類還支持透明度,另外,它也可以通過使用各種各樣的陰影、過濾器和效果進行修改,從而提供由更豐富的、復雜的畫筆和顏料組成的調色板。

從繼承View類(或其子類)開始,並定義onDraw()回調方法。系統會調用該方法來完 成View對象自己的繪制請求。這也是通過Canvas對象來執行所有的圖形繪制調用的地方,這個Canvas對象是由onDraw()回調方法傳入的。

Android框架只在必要的時候才會調用onDraw()方法,每次請求應用程序准備完成圖形 繪制任務時,必須通過調用invalidate()方法讓該View對象失效。這表明可以在該View 對象上進行圖形繪制處理了,然後Android系統會調用該View對象的onDraw()方(盡 管不保證該回調方法會立即被調用)。

在定製的View組件的onDraw()方法內部,使用給定的Canvas對象來完成所有的圖形繪制處理(如Canvas.draw…()方法或把該Canvas對象作為參數傳遞給其他類的draw() 方法)。一旦onDraw()方法被執行完成,Android框架就會使用這個Canvas對象來繪制一個有系統處理的Bitmap對象。

下面是Paint一些常用方法:

Bitmap

Bitmap繪圖的表面也稱點陣圖(這里詳細說哈點陣圖的功能)。

從資源中獲取點陣圖:

通過Resource的函數:InputStream openRawResource(int id)獲取得到資源文件的數據流後,可以通過2種方式獲得bitmap

使用BitmapDrawable :

使用BitmapDrawable(InputStream is)構造一個BitmapDrawable;

使用BitmapDrawable類的getBitmap()獲取得到點陣圖;

使用BitmapFactory使用BitmapFactory類decodeStream(InputStream is)解碼位 圖資源,獲取點陣圖BitmapFactory的所有函數都是static,這個輔助類可以通過資 源ID、路徑、文件、數據流等方式來獲取點陣圖。

獲取點陣圖的信息

一般獲取點陣圖信息包括:點陣圖大小、透明度、顏色格式等等,這些信息呢可以通過 三-一方法獲取得到Bitmap就迎刃而解了,Android SDK中對Bitmap有詳細說明,大家可以去詳細了解哈。

顯示點陣圖

顯示點陣圖需要使用核心類Canvas,可以直接通過Canvas類的drawBirmap()顯示點陣圖,或者藉助於BitmapDrawable來將Bitmap繪制到Canvas,下面的實例中會詳細列舉到

點陣圖的縮放

點陣圖的縮放,在Android SDK中提供了2種方法:

1:將一個點陣圖按照需求重畫一遍,畫後的點陣圖就是我們需要的了,與點陣圖的顯示幾乎 一樣:
drawBitmap(Bitmap bitmap, Rect src, Rectdst, Paint paint)

2:在原有點陣圖的基礎上,縮放原點陣圖,創建一個新的點陣圖:
createBitmap(Bitmap source, int x, int y,int width, int height, Matrix m, boolean filter)

點陣圖旋轉

點陣圖的旋轉,離不開Matrix。Android SDK提供了Matrix類,可以通過各種介面來設置 矩陣

android 處理圖片工具

截取視頻幀並轉化為Bitmap

『貳』 如何讓Android以原始解析度保存在Bitmap中

可以做到網上有很多方法可以找一下

『叄』 怎樣把bitmap圖片存儲到圖庫的指定相冊裡面 安卓

android把Bitmap圖片保存到指定相冊中,具體實現方法如下:
/** 保存方法 */
public void saveBitmap() {
Log.e(TAG, "保存圖片");
File f = new File("/sdcard/namecard/", picName);
if (f.exists()) {
f.delete();
}
try {
FileOutputStream out = new FileOutputStream(f);
bm.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
Log.i(TAG, "已經保存");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
還需要兩個許可權:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

『肆』 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中Bitmap存為一張圖片

可以用Bitmap.compress函數來把Bitmap對象保存成PNG或JPG文件,然後可以用BitmapFactory把文件中的數據讀進來再生成Bitmap對象。
保存的代碼大概類似於這樣:
try {
FileOutputStream out = new FileOutputStream(filename);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
具體的可以去查Bitmap和BitmapFactory的幫助文檔。

『陸』 請問在android 編程,Bitmap 怎麼轉換成 file

static boolean saveBitmap2file(Bitmap bmp,String filename){
CompressFormat format= Bitmap.CompressFormat.JPEG;
int quality = 100;
OutputStream stream = null;
try {
stream = new FileOutputStream("/sdcard/" + filename);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return bmp.compress(format, quality, stream);
}

stream = new FileOutputStream("/sdcard/" + filename);
獲取要保存到的文件的文件流
bmp.compress(format, quality, stream);
把指定的bitmp壓縮到文件中 就是保存在指定文件中 format是文件格式(Bitmap.CompressFormat.JPEG jpeg) quality 是品質(100 就是原質量)
看名字 saveBitmap2file
你要上傳的話 就去指定位置取這個file就行 路徑的問題 可能有寫真機找不到/sdcard/
建議 Environment類取地址 保存和讀取時 都用Environment.getXXXX

『柒』 android中將bitmap保存為一個普通的圖片文件後,在模擬器上查看不到,但是重啟模擬器就可以看到。求牛人解

需要在模擬器上上dev tools里media scanner下,這樣圖片就會重新載入了

『捌』 android 堆棧類 保存bitmap 如何實現

保存bitmap幹嘛……那肯定會OOM的。保存的應該是Path 才對。

java">privatevoindo(){
if(MyPathList.size()>0){
mCanvas.drawColor(0xFFFFFFFF);


for(inti=0;i<MyPathList.size()-1;i++){
Pathp=(Path)MyPathList.get(i);
mCanvas.drawLine(0,0,20,20,mPaint);
mCanvas.drawLine(0,0,80,20,mPaint);
mCanvas.drawPath(p,mPaint);
p.reset();
}
invalidate();
}
}

『玖』 android bitmap保存為file文件,並更新到圖庫

第一步:

第二步:

第三步:

『拾』 android bitmap怎麼做緩存

Bitmap是Android系統中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進行圖像剪切、旋轉、縮放等操作,並可以指定格式保存圖像文件。

重要函數

public void recycle() // 回收點陣圖佔用的內存空間,把點陣圖標記為Dead

public final boolean isRecycled() //判斷點陣圖內存是否已釋放

public final int getWidth()//獲取點陣圖的寬度

public final int getHeight()//獲取點陣圖的高度

public final boolean isMutable()//圖片是否可修改

public int getScaledWidth(Canvas canvas)//獲取指定密度轉換後的圖像的寬度

public int getScaledHeight(Canvas canvas)//獲取指定密度轉換後的圖像的高度

public boolean compress(CompressFormat format, int quality, OutputStream stream)//按指定的圖片格式以及畫質,將圖片轉換為輸出流。

format:Bitmap.CompressFormat.PNG或Bitmap.CompressFormat.JPEG

quality:畫質,0-100.0表示最低畫質壓縮,100以最高畫質壓縮。對於PNG等無損格式的圖片,會忽略此項設置。

public static Bitmap createBitmap(Bitmap src) //以src為原圖生成不可變得新圖像

public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)//以src為原圖,創建新的圖像,指定新圖像的高寬以及是否可變。

public static Bitmap createBitmap(int width, int height, Config config)——創建指定格式、大小的點陣圖

public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height)以source為原圖,創建新的圖片,指定起始坐標以及新圖像的高寬。

BitmapFactory工廠類:
Option 參數類:

public boolean inJustDecodeBounds//如果設置為true,不獲取圖片,不分配內存,但會返回圖片的高度寬度信息。

public int inSampleSize//圖片縮放的倍數

public int outWidth//獲取圖片的寬度值

public int outHeight//獲取圖片的高度值

public int inDensity//用於點陣圖的像素壓縮比

public int inTargetDensity//用於目標點陣圖的像素壓縮比(要生成的點陣圖)

public byte[] inTempStorage //創建臨時文件,將圖片存儲

public boolean inScaled//設置為true時進行圖片壓縮,從inDensity到inTargetDensity

public boolean inDither //如果為true,解碼器嘗試抖動解碼

public Bitmap.Config inPreferredConfig //設置解碼器

public String outMimeType //設置解碼圖像

public boolean inPurgeable//當存儲Pixel的內存空間在系統內存不足時是否可以被回收

public boolean inInputShareable //inPurgeable為true情況下才生效,是否可以共享一個InputStream

public boolean inPreferQualityOverSpeed //為true則優先保證Bitmap質量其次是解碼速度

public boolean inMutable //配置Bitmap是否可以更改,比如:在Bitmap上隔幾個像素加一條線段

public int inScreenDensity //當前屏幕的像素密度
工廠方法:

public static Bitmap decodeFile(String pathName, Options opts) //從文件讀取圖片

public static Bitmap decodeFile(String pathName)

public static Bitmap decodeStream(InputStream is) //從輸入流讀取圖片

public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts)

public static Bitmap decodeResource(Resources res, int id) //從資源文件讀取圖片

public static Bitmap decodeResource(Resources res, int id, Options opts)

public static Bitmap decodeByteArray(byte[] data, int offset, int length) //從數組讀取圖片

public static Bitmap decodeByteArray(byte[] data, int offset, int length, Options opts)

public static Bitmap decodeFileDescriptor(FileDescriptor fd)//從文件讀取文件 與decodeFile不同的是這個直接調用JNI函數進行讀取 效率比較高

public static Bitmap decodeFileDescriptor(FileDescriptor fd, Rect outPadding, Options opts)
Bitmap.Config inPreferredConfig :

枚舉變數 (點陣圖位數越高代表其可以存儲的顏色信息越多,圖像越逼真,佔用內存越大)
public static final Bitmap.Config ALPHA_8 //代表8位Alpha點陣圖 每個像素佔用1byte內存
public static final Bitmap.Config ARGB_4444 //代表16位ARGB點陣圖 每個像素佔用2byte內存
public static final Bitmap.Config ARGB_8888 //代表32位ARGB點陣圖 每個像素佔用4byte內存
public static final Bitmap.Config RGB_565 //代表8位RGB點陣圖 每個像素佔用2byte內存
Android中一張圖片(BitMap)佔用的內存主要和以下幾個因數有關:圖片長度,圖片寬度,單位像素佔用的位元組數。一張圖片(BitMap)佔用的內存=圖片長度*圖片寬度*單位像素佔用的位元組數

閱讀全文

與androidbitmap保存文件相關的資料

熱點內容
php的基本語法 瀏覽:790
對外漢語pdf 瀏覽:516
如何用mamp本地web伺服器 瀏覽:869
如何加密自己js代碼 瀏覽:627
排列組合a與c的演算法 瀏覽:534
如何在文件夾中找到同名內容 瀏覽:786
有什麼app文字轉韓文配音 瀏覽:372
循環宏1命令 瀏覽:35
斐波那契數列矩陣演算法 瀏覽:674
公式保護後加密不了 瀏覽:82
java跳轉到jsp 瀏覽:819
327平方根演算法 瀏覽:216
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399
山西php工資 瀏覽:673
福州看病預約用什麼小程序app 瀏覽:238