Как обрезать растровое изображение сверху и снизу? - PullRequest
0 голосов
/ 25 октября 2018

Мой вид преобразован в растровое изображение, и я хочу вырезать часть снизу и сверху.Моя проблема в том, что я могу сделать одно из них, но когда я хочу сделать другое, это отменяет предыдущую работу.Вот мой код:

bitImage=getBitmapFromView(_root);
                    BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
                    bitmapOptions.inTargetDensity = 1;
                    bitImage.setDensity(Bitmap.DENSITY_NONE);
                    Bitmap crop=Bitmap.createBitmap(bitImage,0,0,bitImage.getWidth(),((int)(bitImage.getHeight()*0.8)));
                    crop=Bitmap.createBitmap(anything here will annul previous line);
                    crop.compress(Bitmap.CompressFormat.PNG,100,out); 

А вот картинка, чтобы вы могли лучше увидеть, что я хочу вырезать (стрелки показывают эти части).Спасибо.

picture

1 Ответ

0 голосов
/ 25 октября 2018

Это обрезает ваше растровое изображение сверху и снизу и принимает центральную траекторию, а условие if (srcBmp.getWidth() >= srcBmp.getHeight()) говорит, что если ширина больше высоты, то оно будет вырезано по горизонтали.

if (srcBmp.getWidth() >= srcBmp.getHeight()){

  dstBmp = Bitmap.createBitmap(
     srcBmp, 
     srcBmp.getWidth()/2 - srcBmp.getHeight()/2,
     0,
     srcBmp.getHeight(), 
     srcBmp.getHeight()
     );

}else{

  dstBmp = Bitmap.createBitmap(
     srcBmp,
     0, 
     srcBmp.getHeight()/2 - srcBmp.getWidth()/2,
     srcBmp.getWidth(),
     srcBmp.getWidth() 
     );
}
...