1

Ich möchte eine Bitmap aus einem ImageView erstellen, aber ich muss zuerst meine ImageView vor dem Konvertieren der Bitmap drehen. Ich verwende den folgenden Code, um ImageView in Bitmap zu konvertieren.Android ImageView zu Bitmap nach dem Drehen

Das ImageView implementiert eine Rotationsgeste. Ich möchte in der Lage sein, das ImageView zu drehen und dann ein Bitmap mit dem gedrehten ImageView zu erstellen. Es scheint jedoch, dass meine Bitmap immer noch die ursprüngliche imageView anstelle der gedrehten Position erhält. Das Folgende ist der vollständige Code. Vielen Dank.

public class MainActivity extends AppCompatActivity implements RotationGestureDetector.OnRotationGestureListener{ 

private ImageView imgPhoto, imgBackground, imgCombine; 
private RotationGestureDetector mRotationDetector; 
private Button btnCombine; 
private float angle; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mRotationDetector = new RotationGestureDetector(this); 

    imgPhoto = (ImageView) findViewById(R.id.imgPhoto); 
    imgBackground = (ImageView) findViewById(R.id.imgBackground); 
    collageImage = (ImageView) findViewById(R.id.imgCombine); 

    btnCombine = (Button)findViewById(R.id.btnCombineImage); 
    btnCombine.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      BitmapDrawable drawable = (BitmapDrawable) imgPhoto.getDrawable(); 
      Bitmap photo = drawable.getBitmap(); 

     } 
    }); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event){ 
    mRotationDetector.onTouchEvent(event); 
    return super.onTouchEvent(event); 
} 

@Override 
public void OnRotation(RotationGestureDetector rotationDetector) { 
    angle = rotationDetector.getAngle(); 
    Log.d("RotationGestureDetector", "Rotation: " + Float.toString(angle)); 
    imgPhoto.setRotation(imgPhoto.getRotation() + (-angle)); 
} 

} 

Antwort

0

Versuchen Sie, diesen Code nach dem OnClick zu verwenden. Es sollte eine gedrehte Bitmap mit dem angegebenen Winkel bereitstellen.

Matrix matrix = new Matrix(); 
matrix.postRotate(angle); 
Bitmap rotatedPhoto = Bitmap.createBitmap(photo, 0, 0, photo.getWidth(), photo.getHeight(), matrix, true); 
+0

Ich erhalte eine Methode nicht beheben können Error. Bitmap rotiertPhoto = Bitmap.createBitmap (imgPhoto, 0, 0, imgPhoto.getWidth(), imgPhoto.getHeight(), matrix, true); – Julia

0

So drehen Image:

Matrix matrix = new Matrix(); 
imageView.setScaleType(ImageView.ScaleType.MATRIX); //required 
matrix.postRotate((float) angle, pivotX, pivotY); 
imageView.setImageMatrix(matrix); 

Quelle: https://stackoverflow.com/a/10104318/7639113

Dann können Sie die Bitmap erstellen, indem DrawingCache Verwendung

imageView.setDrawingCacheEnabled(true); 
Bitmap bitmap = imageView.getDrawingCache(); 
Verwandte Themen