差了90度,怎麼辦呢?這裡就為您介紹怎麼把圖片轉向90度的方法
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="60dp"
android:text="@string/right" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="60dp"
android:text="@string/left" />
</RelativeLayout>
</LinearLayout>
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">DemoImageRotation</string>
<string name="left">左旋90度</string>
<string name="right">右旋90度</string>
</resources>
DemoImageRotationActivity.java
package jim.demo.ImageRotation;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class DemoImageRotationActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//圖片左旋90
Button button_left = (Button)findViewById(R.id.button1);
View.OnClickListener listener_left = new View.OnClickListener() {
public void onClick(View view) {
//取得圖片
ImageView imageView_left = (ImageView) findViewById(R.id.imageView1);
//imageView_left.setDrawingCacheEnabled(true);
//建立圖片的緩存,圖片的緩存本身就是一個Bitmap
imageView_left.buildDrawingCache();
//取得緩存圖片的Bitmap檔
Bitmap bmp=imageView_left.getDrawingCache();
//定義一個矩陣圖
Matrix m=new Matrix();
//取得圖片的寬度
int width=bmp.getWidth();
//取得圖片的長度
int height=bmp.getHeight();
//逆時針旋轉90度
m.setRotate(-90);
//產生新的旋轉後Bitmap檔
Bitmap b=Bitmap.createBitmap(bmp, 0, 0, width, height, m, true);
//顯示圖片
imageView_left.setImageBitmap(b);
}
};
button_left.setOnClickListener(listener_left);
//圖片右旋90
Button button_right = (Button)findViewById(R.id.button2);
View.OnClickListener listener_right = new View.OnClickListener() {
public void onClick(View view) {
//取得圖片
ImageView imageView_right = (ImageView) findViewById(R.id.imageView1);
//imageView_right.setDrawingCacheEnabled(true);
//建立圖片的緩存,圖片的緩存本身就是一個Bitmap
imageView_right.buildDrawingCache();
//取得緩存圖片的Bitmap檔
Bitmap bmp=imageView_right.getDrawingCache();
//定義一個矩陣圖
Matrix m=new Matrix();
//取得圖片的寬度
int width=bmp.getWidth();
//取得圖片的長度
int height=bmp.getHeight();
//順時針旋轉90度
m.postRotate(90);
//產生新的旋轉後Bitmap檔
Bitmap b=Bitmap.createBitmap(bmp, 0, 0, width, height, m, true);
//顯示圖片
imageView_right.setImageBitmap(b);
}
};
button_right.setOnClickListener(listener_right);
}
}
執行畫面
後記:
旋轉圖片對有用到取得手機內圖片及拍照功能的人應該還蠻需要的
但有一個缺點,就是旋轉必須長寬都一樣時用,如果長和寬是不一樣時,比如說是2:1
會出現一種現象,就是會愈轉愈小-.-",原因是當比較大的長轉到比較小的寬時會因為
放不進去,所以會自動縮小,然後你愈轉它就縮的愈多,所以就會出現愈轉愈小的現象
這是我後來再處理照片時發現的,好了!就為您介紹到這了,感謝。



圖片越轉越小這個小BUG目前有辦法解決嗎?
回覆刪除我把圖檔修成長、寬大小一樣,還是會越轉越小
因為我想利用圖片旋轉做一個類似羅盤的程式
請問2個java檔案可以合成一起用嗎?一個menu.java,一個rotation.java
回覆刪除