【移動(dòng)應(yīng)用開發(fā)技術(shù)】我的開源項(xiàng)目:Android圖片剪裁庫_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】我的開源項(xiàng)目:Android圖片剪裁庫_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】我的開源項(xiàng)目:Android圖片剪裁庫_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】我的開源項(xiàng)目:Android圖片剪裁庫_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】我的開源項(xiàng)目:Android圖片剪裁庫

最近利用一周左右的業(yè)余時(shí)間,終于完成了一個(gè)Android圖片剪裁庫,核心功能是根據(jù)自己的理解實(shí)現(xiàn)的,部分代碼參考了Android源碼的圖片剪裁應(yīng)用?,F(xiàn)在將該代碼開源在Github上以供大家學(xué)習(xí)和使用,地址:/Jhuster/ImageCropper,效果如下所示:

我的大致計(jì)劃是首先介紹一下這個(gè)庫的用法,然后再寫幾篇文章介紹一下其中的一些原理和關(guān)鍵技術(shù),希望對Android開發(fā)新手有所幫助?!咎匦浴恐С滞ㄟ^手勢移動(dòng)和縮放剪裁窗口支持固定剪裁窗口大小、固定窗口的長寬比率支持設(shè)置最大的窗口長和寬支持剪裁圖片的旋轉(zhuǎn)易于集成和使用【使用方法】修改AndroidManifest.xml文件需要添加一個(gè)Activity標(biāo)簽:<activity

android:name="com.ticktick.p_w_picpathcropper.CropImageActivity"/>需要添加寫SDcard的權(quán)限<uses-permission

android:name="android.permission.WRITE_EXTERNAL_STORAGE"

/>2.啟動(dòng)圖片剪裁界面的方法第一種方法,使用庫中封裝的CropIntent來構(gòu)建Intent對象:private

void

startCropImage()

{

//

Create

a

CropIntent

CropIntent

intent

=

new

CropIntent();

//

Set

the

source

p_w_picpath

filepath/URL

and

output

filepath/URL

(Required)

intent.setImagePath("/sdcard/source.jpg");

intent.setOutputPath("/sdcard/cropped.jpg");

//

Set

a

fixed

crop

window

size

(Optional)

intent.setOutputSize(640,480);

//

Set

the

max

crop

window

size

(Optional)

intent.setMaxOutputSize(800,600);

//

Set

a

fixed

crop

window's

width/height

aspect

(Optional)

intent.setAspect(3,2);

//

Start

ImageCropper

activity

with

certain

request

code

and

listen

for

result

startActivityForResult(intent.getIntent(this),

REQUEST_CODE_CROP_PICTURE);

}第二種方法,自定義Intent對象:private

void

startCropImage()

{

//

Create

explicit

intent

Intent

intent

=

new

Intent(this,

CropImageActivity.class);

//

Set

the

source

p_w_picpath

filepath/URL

and

output

filepath/URL

(Required)

intent.setData(Uri.fromFile(new

File("/sdcard/source.jpg")));

intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new

File("/sdcard/cropped.jpg")));

//

Set

a

fixed

crop

window

size

(Optional)

intent.putExtra("outputX",640);

intent.putExtra("outputY",480);

//

Set

the

max

crop

window

size

(Optional)

intent.putExtra("maxOutputX",800);

intent.putExtra("maxOutputY",600);

//

Set

a

fixed

crop

window's

width/height

aspect

(Optional)

intent.putExtra("aspectX",3);

intent.putExtra("aspectY",2);

//

Start

ImageCropper

activity

with

certain

request

code

and

listen

for

result

startActivityForResult(intent,

REQUEST_CODE_CROP_PICTURE);

}3.獲取剪裁結(jié)果剪裁結(jié)束后,如果用戶點(diǎn)擊了“Save”按鈕,則可以通過MediaStore.EXTRA_OUTPUT得到保存的圖片的URL地址;如果用戶點(diǎn)擊了“Cancel”,則Activity的返回值會被設(shè)置為RESULT_CANCELprotected

void

onActivityResult(int

requestCode,

int

resultCode,

Intent

data)

{

if

(resultCode

!=

RESULT_OK)

{

return;

}

if

(requestCode

==

REQUEST_CODE_CROP_PICTURE

)

{

Uri

croppedUri

=

data.getExtras().getParcelable(MediaStore.EXTRA_OUTPUT);

InputStream

in

=

null;

try

{

in

=

getContentResolver().openInputStream(croppedUri);

Bitmap

b

=

BitmapFactory.decodeStream(in);

mImageView.setImageBitmap(b);

}

catch

(FileNotFoundException

e)

{

e.printStackTrace();

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論