2017-10-24 3 views
0

Image sample Ich habe diese Methode für das Beschneiden meines Bildes geschrieben, aber Höhe Dimension funktioniert nicht auf den Zuschnitt, nur Gewicht ist richtig gemacht. Ich kann das Problem nicht finden. Ich möchte meine Bildschirmbreite und -höhe als dynamische Breite und Höhe verwenden.Crop Bitmap Bild zu benutzerdefinierten sguare

public Bitmap cropToSquare(Bitmap bitmap){ 
     int width = mScreenWidth ; 
     int height = mScreenHeight; 
     int newWidth = width - 2 * 10; 
     int newHeight = (height- newWidth)/2; 

     Bitmap cropImg = Bitmap.createBitmap(bitmap, 0, 0, newWidth, newHeight); 
     return cropImg; } 

    } 
+0

Bitte erläutern Sie, was Sie erreichen möchten, indem Sie einen Schnappschuss anhängen, es wird uns helfen, das Problem besser zu verstehen !!!!! – Mandy8055

Antwort

0

Hier ist meine Lösung:

public static Bitmap getResizedClippedBitmap (Bitmap bm, int newWidth, int newHeight) { 

    Bitmap targetBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(targetBitmap); 

    float originalWidth = bm.getWidth(); 
    float originalHeight = bm.getHeight(); 

    float scale, xTranslation = 0.0f, yTranslation = 0.0f; 
    if (originalWidth > originalHeight) { 
     scale = newHeight/originalHeight; 
     xTranslation = (newWidth - originalWidth * scale)/2.0f; 
    } 
    else { 
     scale = newWidth/originalWidth; 
     yTranslation = (newHeight - originalHeight * scale)/2.0f; 
    } 

    Matrix transformation = new Matrix(); 
    transformation.postTranslate(xTranslation, yTranslation); 
    transformation.preScale(scale, scale); 

    Paint paint = new Paint(); 
    paint.setFilterBitmap(true); 
    canvas.drawBitmap(bm, transformation, paint); 

    return targetBitmap; 
} 

Sie können einige andere utils finden Sie hier: BitmapUtils.java Hoffe, es hilft.