Bei einem Bild möchte ich nur einen Teil des Bildes skalieren können. Sagen wir, ich möchte die Hälfte des Bildes so vergrößern, dass diese Hälfte den gesamten Raum einnimmt.
Wie ist das möglich?
Wird ImageView fitXY Arbeit, weil ich dachte, es wird nur für das gesamte Originalbild zu arbeiten.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout linearLayout = new LinearLayout(this);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int newWidth = 640;
int newHeight = 480;
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// create the new Bitmap object
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 50, 50, width,
height, matrix, true);
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
ImageView imageView = new ImageView(this);
imageView.setImageDrawable(bmd);
imageView.setScaleType(ScaleType.CENTER);
linearLayout.addView(imageView, new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
setContentView(linearLayout);
}
}
Dies funktioniert nur, wenn in createBitmap, die X- und Y-Koordinaten der ersten Pixel in der Quelle sind 0. bedeutet, ich bin nicht in der Lage, eine Teilmenge des Bildes zu nehmen. Ich kann nur das ganze Bild skalieren. Aber createBitmap ist dafür gedacht, ein Bild zu unterteilen.
Im Protokoll, wenn die Parameter nicht 0 sind, erhalte ich die folgende Ausnahme: java.lang.IllegalArgumentException: x + width must be <= bitmap.width()
Bitte um Hilfe