『壹』 android 手機照相機拍照的照片,默認的保存路徑是什麼。
裝了SD卡的:
/sdcard/DCIM/camera
未裝SD卡的:
/stystm/DCIM/camera
一般安卓手機的相機功能都會有固定的存放路徑,這個位置默認為:/sdcard/DCIM/100Andro或者/sdcard/DCIM/Camera,這里的sdcard是指手機中的SD卡,在電腦中顯示的為可移動磁碟。
根據不同品牌安卓手機的後期開發,文件夾名稱可能不太一樣,但一般是在DCIM目錄文件夾里邊,當然也會有特別,例如在酷派手機中手機拍照的圖片是存放在根目錄中的Photo中。
首先,打開手機上的相機,點擊設置按鈕,裡面會有一個選擇存儲位置,一般默認是存儲在手機內存,可以進行修改,存到SD卡中。通過數據線連接到電腦後,一般是一個叫DCIM的文件。
(1)android儲存圖片擴展閱讀:
手機攝像頭的技術:
「像素」指的是相機感測器上的最小感光單位,通常所說的「XXX萬像素」實際是指相機的解析度,其數值大小主要由相機感測器中的像素點(即最小感光單位)數量決定。
相機的像素能決定的是其所拍圖片的解析度,而圖片的解析度越高,只代表了圖片的尺寸越大,並不能說明圖片越清晰。
感測器
相機感測器主要分兩種,CCD和CMOS。同時代的CMOS比CCD的開口率要低很多(也就是相同面積下,感光晶元真正接收光的面積CCD會比較大)。富士等創新型cmos的出現,CCD因為成本高,成像上越來越沒優勢就被淘汰了。
CMOS感測器又分為背照式和堆棧式兩種,二者系出同門,技術最早都由索尼研發,索尼背照式感測器品牌名為「ExmorR」,堆棧式感測器為「ExmorRS」。
相對來說,感測器尺寸越大,感光性能越好,捕捉的光子(圖形信號)越多,信噪比越高,成像效果自然也越出色,然而更大的感測器卻會導致手機的體積、重量、成本增加。
『貳』 Android調用手機相機拍照,保存圖片會出現2張解決辦法。
最近項目中使用系統相機拍照,保存圖片,發現一些問題。
讀取圖片旋轉角度,然後再旋轉回去。
使用BitmapFactory.Options,能更准確的獲取圖片格式,
判斷地址末尾 .gif 有時候會不準確(不推薦)
上傳伺服器,一般使用地址,但是用戶手動刪除圖片後,地址是無效的。為了防止地址無效,可以對需要上傳圖片地址做保存,但又希望系統讀取不到,可以對保存地址進行修改。
讀取圖片地址api
我們可以去系統相冊查看兩張圖片,會發現兩張圖片的地址是不一樣的,而且兩張圖片的大小也不同。
出現2張的原因是:
(1)調用系統相機,拍照完成我們會生成一個保存地址,而這個地址是: /storage/android/data/包名/Picture/ ,這張是我們保存的拍照圖片。
(2)相同的一張圖片在哪?這個地址是:/storage/Pictures/ ,這張圖片是系統復制的App目錄下Pictures中的圖片。
所以就會出現在系統相冊兩張圖片,但兩張圖片大小不一致,地址不同。
調用系統api,只能讀取到一張,是系統復制的那張,也就是 /storage/Pictures/ 目錄下的這張,但是/storage/android/data/包名/Picture/ 目錄下的沒有讀取到。
知道了問題,就有解決辦法,可分為三種方法:
(1)第一種方法:
保存圖片的時候,修改下地址(可參照標題 3 ,這樣讓系統無法識別出這張圖片),結果就是,我讀取不到,系統也別想讀取不到,在系統相冊里也就看不到這張圖片。
(2)第二種方法:
因為api無法讀取到,那我們就直接再讀取/storage/android/data/包名/Picture/ 下的文件,把圖片一塊加入到同一個集合中用於展示,這樣所有的圖片都有了,但是系統相冊中還是有兩張圖片,為解決這個問題。
(3)第三種方法:( )
在我們保存圖片的時候,直接保存到 /storage/Pictures/ 這個目錄下,也不用系統幫我們復制了,這樣就只會出現一張,而且我們也能調用api直接讀取到,兩個問題全都解決了,完美!
(如果以上有錯誤或者有更優美的方式,感謝指出並改之,與君共勉)
這是我項目中出現的問題,希望能夠幫助到你,Thanks,Bye!
『叄』 Android開發中怎麼將照片存儲到系統相冊中
java">//創建輸出流,指向SD卡的Pictures文件夾
finalFiledirectory=Environment.(Environment.DIRECTORY_DCIM);
//創建保存的文件
Filefile=newFile(directory,"test.png");
FileOutputStreamout=null;
try{
out=newFileOutputStream(file);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
}
//bitmap就是你的圖片
bitmap.compress(Bitmap.CompressFormat.PNG,100,out);