2012-12-28 78 views
1

我的應用讓用戶用相機拍照並返回一個包含圖像數據的字節數組(jpeg,但可以修改)。從字節數組中裁剪圖像

如果我們知道圖片的寬度和高度,是有可能使用

BitmapFactory.decodeByteArray(data, offset, length) 

爲了解碼從指定的偏移量得到一個平方畫中畫?

圖像是高分辨率(人像),我只需要這張圖像的平方底部仍然在高分辨率圖像處理。

x offset = 0 
y offset = height - width 
width = width 
height = width 

我看過this答案,但我仍然想知道這是否可能。如果需要的話

我可以與另一種格式壓縮的圖像數據

我的猜測是,以計算用於存儲n行中的像素(使用已知的尺寸),其中n = maxRows - pictureWidth

,然後從來計算偏移

開始的字節數

回答

0

首先解碼體積小

BitmapFactory.Options opt = new BitmapFactory.Options(); 
    opt.inSampleSize = 4; //inSampleSize == 4 returns an image that is 1/4 the width/height of the original, and 1/16 the number of pixels 

BitmapFactory.decodeByteArray(data, offset, length, opt) 

然後

bitMap1 = Bitmap.createScaledBitmap(bitMap, width, height, true); 

試試這個

+0

但要使用此功能,我必須將我的圖像加載到位圖中,並且由於文件很大(3mb +),我無法將其加載到位圖中,而無法縮小它(使用的方法寧願是「位圖」。 createBitmap(sourceBmp,x,y,width,height)' –

+0

請參閱已編輯的答案 – Siva

+0

我需要爲圖像的底部提供最高分辨率才能進行圖像處理,所以我不能對源圖像下采樣 –