2015-05-01 21 views
5

Zaten bu soruda iş parçacığı olduğunu biliyorum, ancak çözümler artık çalışmıyor gibi görünen Matrix sınıfındaki yöntemleri kullanıyor görünüyor. İthalattan sonra bile yöntemler çözülemez. Temel olarak dikey olarak fotoğraf çektiğimde yana doğru çıktığı için bir bitmap'i 90 derece döndürmeye çalışıyorum. İşte aktivite için benim kod:Android'de bir bitmap'i nasıl döndürürüm?

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.camera); 
     this.imageView = (ImageView)this.findViewById(R.id.imageView1); 
     Button photoButton = (Button) this.findViewById(R.id.button1); 
     photoButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
       File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg"); 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
       startActivityForResult(intent, CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE); 

      } 
     }); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     //Check that request code matches ours: 
     if (requestCode == CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE) 
     { 
      //Get our saved file into a bitmap object: 
      File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg"); 
      Bitmap bitmap = decodeSampledBitmapFromFile(file.getAbsolutePath(), 1000, 700); 

      Intent intent = new Intent(this, EditActivity.class); 

      ByteArrayOutputStream bs = new ByteArrayOutputStream(); 

      bitmap.compress(Bitmap.CompressFormat.PNG, 50, bs); 
      intent.putExtra("byteArray", bs.toByteArray()); 

      startActivity(intent); 



     } 
    } 
+0

https://blahti.wordpress.com/2014/02/03/android-rotate-scale-bitmap/ adresinden kontrol edebilirsiniz –

cevap

8

bu deneyin:

İşte
public static Bitmap RotateBitmap(Bitmap source, float angle) 
{ 
     Matrix matrix = new Matrix(); 
     matrix.postRotate(angle); 
     return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); 
} 

bit eşlem geçmesi ya lütfen kullandığınız bitmap ekranını değişecek 90 180 etc.it gibi bitmap göstermek istediğim şey açıda yine postRotate() sınıfı Matrix yöntemi ve bitmap oluşturabilir ve

+0

Bu kodun soruyu neden cevapladığını açıklamak için lütfen cevabınızı [değiştirebilir misiniz? Yalnızca kod yanıtları [önerilmemektedir] (http://meta.stackexchange.com/questions/148272), çünkü çözümü öğretmiyorlar. – DavidPostill

+0

Teşekkürler @DavidPostill –

+0

Teşekkür ederim bu işe yaradı! –

0

sen düzeni bir TextView eklemek ve

ImageView yourView = (ImageView)findViewById(imageviewid); 
Bitmap bitmap = decodeSampledBitmapFromFile(file.getAbsolutePath(), 1000, 700); 
yourView.setImageBitmap(bitmap); 
için bitmap ayarlayabilirsiniz dönmek

Muhtemelen Döndürmek istediğiniz Görünümde (Resim Görünümü, Bitmap olarak ayarlanmış) RotateAnimation öğelerini kullanabilir ve Animasyonu fillAfter=true ve duration=0 olarak ayarlamayı unutmayın.

<?xml version="1.0" encoding="utf-8"?> 
<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="90" 
    android:toDegrees="180" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="0" 
    android:startOffset="0" 
/> 

Şimdi tek ihtiyacınız Görünüm

Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation); 
yourView.startAnimation(rotation); 

animasyon şişirmek etmektir Veya sadece API >= 11 ile bu yourView.setRotation(angle) yapabilirsiniz.

+0

@ThanhLeTran Cevabınız senin için işe yaramadı mı? – MChaker

İlgili konular