1.拍照 (對于7.0以上的版本,不在允許直接訪問uri)
為華寧等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及華寧網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站設計、網(wǎng)站建設、華寧網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
`
若不指定輸出路徑intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity)); 在onActivityResult()中,通過
`
可以拿到uri,但獲得的圖片是被壓縮過的。若指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);輸出路徑,則此處的intent為null,但可以使用我們存的uri讀取照片,此時的照片沒有被壓縮。
2.從相冊中讀取照片, 方法:
`
`
即使設置 intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity));輸出路徑,仍然不能從此路徑中讀取,只能在onActivityForResult()中通過event.uri = intent.getData();方式獲得圖片uri。
此種現(xiàn)象也好理解,拍照時產(chǎn)生新的圖片,自然可根據(jù)設置的uri進行圖片保存,而讀取相冊時,圖片已經(jīng)在目錄中不能轉(zhuǎn)移到自己設定的uri中。
Androidmanifest.xml中
`
在 res/xml/provider_paths.xml
`
?xml version="1.0" encoding="utf-8"?
paths
external-path name="JDTobs" path=""/
files-path name="name" path="path" /
cache-path name="name" path="path" / external-path name="name" path="path" /
external-files-path name="name" path="path" /
external-cache-path name="name" path="path" / /paths `
讀取uri
以前在實際項目中使用拍照和從圖庫中獲取圖片時,不知道以何種方式從回調(diào)中取得圖片資源,以Bitmap方式還是Uri的形式?如果是使用Bitmap,應該注意些什么,Uri又是一種什么樣的格式?有時會出現(xiàn)拍照時回調(diào)data數(shù)據(jù)為空的情況,又該如何定位問題呢?圖片裁剪又是怎樣決定方案的?以下將針對這幾個問題闡述自己的見解。
在Android中,Intent觸發(fā) Camera程序,拍好照片后會返回數(shù)據(jù),比如攝像頭800萬像素,拍出來的圖片尺寸為 3200x2400,占據(jù)內(nèi)存大小=3200 x 2400 x 4bytes / (1024 x 1024) = 30MB 【圖像設置ARGB_8888一個像素點占據(jù)4字節(jié)內(nèi)存】,這個尺寸對應的 Bitmap會耗光應用程序的內(nèi)存,出于安全方面的考慮,Android會給你一個縮略圖,比如 160 x 120 px。
Q:為何要返回圖縮略?
縮略圖是指從onActivityForResullt回調(diào)方法中 intent保存的參數(shù)圖片。這是因為在啟動相機程序拍攝圖片,為了讓Bitmap數(shù)據(jù)能在Activity之間傳遞,不得不將拍攝后的Bitmap進行壓縮再傳遞,因此通過回調(diào)從intent中取得的是縮略圖在于拍攝的Bitmap太大,Activity之間Bundle存放的數(shù)據(jù)不能太大,會導致程序無響應。高清原圖是指直接將拍攝的圖片以文件/Uri形式保存到手機。
注:Bitmap實現(xiàn)了Parcelable 接口,所有可以在Activity間使用Intent傳遞。
Q:使用Bitmap需要注意哪些問題?
1、Android 裁剪圖片 Intent 附加數(shù)據(jù)的含義
| setExtra | DataType | Desciption | Extra |
|:-------- |:--------:| :------: |
|crop| String | Signals the crop feature | value="true" |
|aspectX|int|Aspect Ratio|裁剪橫向比例|
|aspectY|int|Aspect Ratio|裁剪縱向比例|
|outputX|int|width od output created from this intent|輸出寬度|
|outputY|int|height od output created from this intent|輸出高度|
|scale|boolean|should it scale|是否伸縮|
|return-date|boolean|Return the bitmap with Action-inline-data by using the data|是否返回Bitmap數(shù)據(jù)|
|data|Parcelable|Bitmap to process, you may provide it a bitmap (not tested)|可設置data為Bitmap或者將相應數(shù)據(jù)同uri聯(lián)系起來|
|circleCrop|String|if this string is not null, it will provide some cicular cr||
|MediaStore.
EXTRA_OUTPUT("output")|URI|set this URI to a File|輸出路徑到uri中|
2、圖片裁剪終極方案 — 圖片來源有拍照和圖庫,可采取的操作有:
3、剪切圖片:
很多人覺得Android手機的拍照功能不如蘋果,但事實上,許多Android手機配備了高質(zhì)量攝像頭,只要掌握正確方法,用手機拍出完美的照片也是很簡單的,下面就帶來Android手機拍攝實用小技巧,一起來看看吧。
了解攝像頭設置
在開始拍攝之前,先要熟悉手機和攝像頭的設置,之后再拍攝就會得心應手了。如果我們能夠了解不同的模式和設置,就可以深入探索和實驗,讓拍攝更具創(chuàng)造力。
確保鏡頭干凈
看起來這一點很奇怪,在使用單反相機時,我們可能會記得擦拭單反鏡頭,但是很難記得要擦拭手機鏡頭。Android手機攝像頭沒有防塵防刮保護罩,專業(yè)相機有。
隨身攜帶一小塊清潔布,或者在錢包、夾克內(nèi)縫一小塊超細纖維鏡頭清潔布,時時提醒自己擦拭手機鏡頭和屏幕,如此一來就可以確保手機拍攝出最清晰的照片。如果嫌麻煩,可以直接用汗衫擦拭。不要忘了擦拭前置攝像頭。
忘了閃光燈 用外部光源
如果外部環(huán)境黑暗,我們會下意識打開閃光燈拍攝照片,但是獲得的圖片質(zhì)量總是不盡人意。事實上,我們完全可以不使用閃光燈,幾乎從不使用。在拍攝照片時,我們可以尋找自然光源。如果你在餐館內(nèi),想拍攝一張菜肴的照片,可以選擇靠窗戶的座位,如此一來就可以獲得完美的光線,拍出菜肴的細節(jié)。
如果你想自拍,可以站在大窗戶前拍攝。這樣拍攝并不會讓你的臉和特征“亮”起來,但是會讓背景變暗,讓你本人處在注意力的正中央。如果沒有自然光,要拍攝照片是不可能的,因此在拍攝時最好找一個外部光源,比如一盞燈或者一支蠟燭。雖然看起來很愚蠢,但是幾乎所有的其它光線都要比閃光燈好,有了更好的光線,就可以控制拍攝的內(nèi)容,讓我們想要的`部分亮起來。
不要變焦
和Android手機的閃光燈一樣,我們應該避開變焦功能。變焦會降低圖像的質(zhì)量,當我們編輯照片時可能會發(fā)現(xiàn)一些驚艷的東西,之前沒有發(fā)現(xiàn),我們可以將這些漂亮的部分剪出來。
這一點我們很難記住,Android設備和單反相機是不一樣的。用手機拍攝時如果我們使用了變焦功能,圖像的質(zhì)量很難保持一致。
如果你真的想親近自己拍攝的對象,請站起來,走近它,不要使用變焦功能。用這種方法拍攝,可以很好控制拍攝的對象,如果用變焦功能就會降低照片的整體質(zhì)量。
爆發(fā)性拍攝然后挑選
在拍攝照片時,爆發(fā)性拍攝的確是一種懶惰的拍攝方式,但是它極可能是拍攝完美照片的最有效方式。
不管是自拍、拍風景、或者是拍攝菜肴,使用爆發(fā)性拍攝方式可以毫無壓力拍出一大堆照片,我們只需要按下快門,就可以用快速鏡頭拍出很多照片,拍完之后再選擇哪些最完美的。
雖然拍攝的照片有許多很糟糕,完全無法使用,但是當中還是有隱藏了少數(shù)“寶石”。花點時間細細查看拍攝的照片,挑出最好的,刪除糟糕的。
找一個自己喜歡的照片編輯軟件
拍完照片之后,你可以選擇自己喜歡的APP編輯軟件編輯照片。現(xiàn)在市場上有許多的軟件可供選擇,每一款軟件都有自己獨特的功能,比如過濾器、調(diào)整亮度和對比度、甚至還可以增加文本信息和貼紙。
如果你對自己拍攝的照片信心不足,照片編輯軟件也是一個很棒的補充工具。如果你對某些照片的質(zhì)量有點擔心,用編輯軟件稍稍編輯可以“拯救”這些照片。
在社交媒體上關注你喜歡的攝影師
有時,用Android手機拍攝最好的照片并不是從相機APP開始的,而是從瀏覽社交媒體開始的,我們在社交媒體上看到攝影師用Android手機拍攝漂亮的照片,從中可以學到經(jīng)驗。
在社區(qū)媒體上關注一些攝影師,向他們?nèi)〗?jīng),可以獲得一些很好的經(jīng)驗,因此我們完全可以先看看別人拍攝的好照片,然后走出去嘗試一下。你可以發(fā)表評論,問問他,看他是如何用特定風格拍攝特定對象的,或者問問他們是如何編輯特定照片、使之呈現(xiàn)特定風格的,拍攝者可能會回復。
你可以前往Instagram頁面探索一下,欣賞欣賞其它Android手機攝影師拍攝的照片。最開始時你可以挑選喜歡的風格模仿拍攝,最終將它變成自己的。
1.遍歷sdcard文件夾(指定層次深度 searchDeep ),如果文件夾發(fā)現(xiàn)圖片 , 添加到已搜索到圖片的文件列表中,并跳入下一個文件夾搜索
2.使用 ContentResolver 搜索 添加搜索標簽(png,jpg,jpeg,gif 等) 優(yōu)點:更快速
壓縮調(diào)用
第一步--
采樣率壓縮:設置 BitmapFactory.Options.inSampleSize 大小
第二步--
PNG:尺寸壓縮( Config:ARGB_4444 ,工具: Canvas );
JPG:尺寸壓縮( Config:ARGB_565 ,工具: Canvas )+壓縮質(zhì)量( bitmap.compress() )
注 :
1.GIF不做壓縮處理
2.尺寸壓縮:改變寬高(png,jpg)
3.壓縮質(zhì)量:改變文件大小(適用jpg,png無效)