新手用戶問題:Android - 如何使用視圖佈局尺寸裁剪jpeg
我已經搜索並嘗試了幾天,需要一些幫助。我可能已經閱讀過關於這個主題的所有帖子,但我仍然無法弄清楚。
我正在嘗試裁剪相機預覽圖像的特定區域。問題在於,藍色框由頂部= 150和左側= 38,高度= 292和寬度= 600的佈局定義。圖像的高度= 2448和寬度= 3264.
大框是相機預覽屏幕,小盒子是我想裁剪的部分(顯然我還沒有發佈圖片的能力)。
----------------------------- | | | | | | | --------- | | | | | | --------- | | | -----------------------------
如何裁剪圖像,所以我只有在框中的部分留下?我會在另一個活動上展示它,所以我不擔心這一部分。
只是爲了使事情複雜化,盒子的大小和圖像大小根據手機而變化,我需要使用API 8(2.2版,Froyo)。
我也不希望將圖像保存到一個文件,因爲那樣我就不得不加密它(該圖片將成爲存款支票的圖像)。
我使用Camera.takePicture()和jpegCallback如下面的代碼片段(initialBitmap將是「大盒子」上面,和RL將是「小盒子」):
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
if (data != null && data.length > 0) {
Bitmap initialBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
int bitmapHeight = initialBitmap.getHeight();
int bitmapWidth = initialBitmap.getWidth();
// get the "picture" frame
RelativeLayout rl = (RelativeLayout) findViewById(R.id.clear_layout);
int frameX = rl.getLeft();
int frameY = rl.getTop();
int frameHeight = rl.getHeight();
希望視圖座標/尺寸和位圖之間有一個簡單的數學關係。
我也開放給任何更好的方式去嘗試使用預覽數據本身(太小)和操縱位圖(內存不足錯誤)。
在此先感謝。
如果你知道你想要的盒子的位置,爲什麼你從相對佈局獲得信息?爲什麼不直接使用問題開始處的信息和Bitmap.createBitmap(位圖源,int x,int y,int width,int height)來獲取新位圖中的子部分? – 2013-03-01 18:55:58
即使你說已經閱讀了所有圖像裁剪,你有沒有檢查過這個答案? http://stackoverflow.com/a/9388244/1657165 – Rigotti 2013-03-01 20:17:00
我明白如何裁剪圖像。我遇到的問題是根據活動佈局上顯示的RelativeLayout的頂部,左側,寬度和高度,我不知道圖像中的x,y,寬度和高度。 (即,佈局是442×960像素,但是JPEG圖像是2448×3264像素)。什麼是關係?我試過縮放,但似乎在預覽之外有更多圖片導致數學關閉。 – Gravitoid 2013-03-01 20:52:42