So erstellen Sie eine quadratische bitmap aus einem rechteckigen bitmap in Android

Grundsätzlich habe ich eine rechteckige bitmap und wollen, erstellen Sie eine neue Bitmap mit quadratischen Abmessungen, die enthalten die rechteckige bitmap drin.

So, zum Beispiel, wenn die Quell-bitmap Breite:100 und Höhe:400, ich möchte eine neue bitmap mit Breite:400 Höhe:400. Ziehen Sie dann die Quell-bitmap zentriert innerhalb dieser new bitmap (siehe die beigefügten Bild für ein besseres Verständnis).

So erstellen Sie eine quadratische bitmap aus einem rechteckigen bitmap in Android

Meine folgende code erstellt die Platz-bitmap in Ordnung, aber die Quell-bitmap wird nicht rein gezogen. Als ein Ergebnis, ich bin Links mit einer bitmap, die komplett schwarz ist.

Hier ist der code:

Bitmap sourceBitmap = BitmapFactory.decodeFile(sourcePath);

Bitmap resultBitmap= Bitmap.createBitmap(sourceBitmap.getHeight(), sourceBitmap.getHeight(), Bitmap.Config.ARGB_8888);

Canvas c = new Canvas(resultBitmap);

Rect sourceRect = new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight());
Rect destinationRect = new Rect((resultBitmap.getWidth() - sourceBitmap.getWidth())/2, 0, (resultBitmap.getWidth() + sourceBitmap.getWidth())/2, sourceBitmap.getHeight());
c.drawBitmap(resultBitmap, sourceRect, destinationRect, null);

//save to file
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");
File file = new File(mediaStorageDir.getPath() + File.separator + "result.jpg");
try {
    result.compress(CompressFormat.JPEG, 100, new FileOutputStream(file));
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

Irgendeine Idee, was ich falsch mache?

  • Warum verwenden Sie eine Leinwand und nicht um eine Bildansicht?
InformationsquelleAutor Henrique | 2013-11-02
Schreibe einen Kommentar