1

Je veux créer un bitmap à partir d'un imageView, mais je dois d'abord faire pivoter mon imageView avant de convertir le bitmap. J'utilise le code suivant pour convertir imageView en bitmap.Android ImageView au bitmap après la rotation

BitmapDrawable drawable = (BitmapDrawable) imgPhoto.getDrawable(); 
Bitmap photo = drawable.getBitmap(); 

L'imageView implémente un mouvement de rotation. Je veux être en mesure de faire pivoter l'imageView et ensuite créer un bitmap en utilisant l'imageView pivoté. Cependant, il semble que mon bitmap continue d'obtenir l'image originale plutôt que la position pivotée. Ce qui suit est le code complet. Je vous remercie.

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)); 
} 

} 

Répondre

0

Essayez d'utiliser ce code après onClick. Il doit fournir un bitmap pivoté avec l'angle spécifié.

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

Je reçois une méthode ne peut pas être résoudre Erreur. Bitmap rotatedPhoto = Bitmap.createBitmap (imgPhoto, 0, 0, imgPhoto.getWidth(), imgPhoto.getHeight(), matrice, true); – Julia

0

Pour tourner ImageView:

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

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

Ensuite, vous pouvez créer le bitmap en utilisant DrawingCache,

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