내 안드로이드 응용 프로그램에서 비트 맵을 가지고 있으며이 비트 맵에서 자른 다른 비트 맵을 만들고 싶습니다. 즉, 원래 비트 맵에서 특정 부분을 가져 오려고합니다.원본 비트 맵에서 자른 비트 맵 만들기
나는 Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height)
를 사용하고 있지만 대가로 얻을 이미지가 확대 될 것으로 보인다.
내 안드로이드 응용 프로그램에서 비트 맵을 가지고 있으며이 비트 맵에서 자른 다른 비트 맵을 만들고 싶습니다. 즉, 원래 비트 맵에서 특정 부분을 가져 오려고합니다.원본 비트 맵에서 자른 비트 맵 만들기
나는 Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height)
를 사용하고 있지만 대가로 얻을 이미지가 확대 될 것으로 보인다.
Bitmap.createBitmap (비트 맵 원본, int x, int y, int 너비, int 높이)이 올바른 방법입니다. 나는 당신이 매개 변수를 잘못 사용하고있는 것 같아.
예. img라는 100x100 비트 맵의 가운데 50x50 픽셀을 얻으려면 다음을 사용하십시오.
Bitmap.createBitmap (img, 25, 25, 50, 50);
내 조언 : IMAGES_WIDTH 및 IMAGES_HEIGHT 원래 PNG와 W, H의 크기입니다
r = this.getContext().getResources();
Drawable copyFrom= r.getDrawable(R.drawable.OriginalPNG);
Bitmap b1 = Bitmap.createBitmap(IMAGES_WIDTH, IMAGES_HEIGHT,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(b1);
copyFrom.setBounds(0, 0, IMAGES_WIDTH, IMAGES_HEIGHT);
copyFrom.draw(canvas);
Bitmap copyTo;
copyTo = Bitmap.createBitmap(copyFrom, x, y, W, H);
이 영역의 크기입니다 복사하고 싶습니다. x 및 y는 원래 PNG에서 복사를 시작할 위치를 지정합니다. x, y를 모두 0으로 놓는 것은 왼쪽 상단 모서리부터 시작한다는 것을 의미합니다.
Rect re=new Rect(350, 150, 350, 150);
public void takePicture(final String fileName) {
Log.i(TAG, "Tacking picture");
PictureCallback callback = new PictureCallback() {
private String mPictureFileName = fileName;
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.i(TAG, "Saving a bitmap to file");
Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap finalBitmap = Bitmap.createBitmap(picture, 850, 500, 960, 720);
try {
FileOutputStream out = new FileOutputStream(mPictureFileName);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
finalBitmap.recycle();
mCamera.startPreview();
} catch (Exception e) {
e.printStackTrace();
}
}
};
mCamera.takePicture(null, null, callback);
}
드로어 블에서 setBounds (0, 0, width, height)를 사용합니까? – Sanandrea