2013-07-09 2 views
0

Я собираю изображение с помощью камеры, затем я сохраняю его в растровом изображении. Я с нетерпением жду, чтобы обрезать этот образ, до 600x600px.Обрезать изображение до фиксированного размера

Нечто подобное я нашел:

https://stackoverflow.com/a/6909144/1943607

Однако, я не могу узнать, как я могу установить фиксированный с & высотой.

Я плохо сочиняю изображения и холст. Кажется, это так абстрактно для меня.

спасибо.

ответ

1

This - это именно то, что вам нужно.

// Returns an immutable bitmap from the specified subset of the source bitmap. 
static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height) 



Я не знаю, если (0,0) в левом верхнем углу или в центре, но я считаю, что в левом верхнем углу.

* (0,0) 

*~~~~~~+===========+ 
'  '   | 
'  ' 200  | 
'  '   | 
+~~~~~~+   | 400 
| 100    | 
|     | 
|     | 
+==================+ 
     300 


Если это действительно центр, то:

x should be width /2 
y >>  height/2 

В противном случае, если это верхний левый:

x should be width /2 - cropWidth/2 
y >>  height/2 - cropHeight/2 

В обоих случаях будет выглядеть следующим образом.

* (150,200) 

+==================+ 
|     | 
|  +~~~~~~+  | 
|  '  '  | 
|  ' * '200 | 400 
|  '  '  | 
|  +~~~~~~+  | 
|  100  | 
+==================+ 
     300 
+0

получил что-то вроде 'newBitmap = Bitmap.createBitmap (oldBitmap, x, y, 500, 500);'. Как видите, x и y отсутствуют. Я не уверен, как его вычислить. – Reinherd

+0

@ SergiCastellsaguéMillán прочитал мой ответ еще раз. –

0

600x600px

if(srcBmp.getWidth()>600 && srcBmp.getHeight()>600) 
    dstBmp = Bitmap.createBitmap(srcBmp, 
     srcBmp.getWidth()/2 - 600/2, 
     srcBmp.getHeight()/2 - 600/2, 
     600, 
     600); 

изменить код по ссылке вы дали, надеюсь, что это работает.

Смежные вопросы