写了一个把图片旋转的方法,但是报错,java.lang.IllegalArgumentException: width and height must be > 0
设置转换矩形区域,旋转时要判断旋转角度是否大于0后,就不在报错了
public static void setDirectionImage(Context mActivity,ImageView image,double lat_a, double lng_a, double lat_b, double lng_b){
Bitmap bitmap=((BitmapDrawable) mActivity.getResources().getDrawable(R.drawable.img_direction_bloginfo)).getBitmap();
Matrix matrix = new Matrix();
Bitmap bp;
RectF rect = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
matrix.setRectToRect(rect, rect, Matrix.ScaleToFit.CENTER);
//设置图像的旋转角度
matrix.setRotate((float) gps2d( lng_a, lat_a,lng_b, lat_b));
// Log.i("info", "bitmap===="+"bitmap.getWidth():"+bitmap.getWidth()+" ;bitmap.getHeight():"+ bitmap.getHeight()+"matrix:"+gps2d( lng_a, lat_a,lng_b, lat_b));
//旋转图像,并生成新的Bitmap对像
bp=Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
//重新在ImageView组件中显示旋转后的图像
image.setImageBitmap(bp);
}
/**
* 计算方位角pab。
* @param lat_a A点的纬度
* @param lng_a A点的经度
* @param lat_b B点的纬度
* @param lng_b B点的经度
* @return
*/
public static double gps2d(double lat_a, double lng_a, double lat_b, double lng_b) {
if(lat_a==lat_b&&lng_a==lng_b){
return 0;
}
double d = 0;
lat_a=lat_a*Math.PI/180;
lng_a=lng_a*Math.PI/180;
lat_b=lat_b*Math.PI/180;
lng_b=lng_b*Math.PI/180;
d=Math.sin(lat_a)*Math.sin(lat_b)+Math.cos(lat_a)*Math.cos(lat_b)*Math.cos(lng_b-lng_a);
d=Math.sqrt(1-d*d);
d=Math.cos(lat_b)*Math.sin(lng_b-lng_a)/d;
d=Math.asin(d)*180/Math.PI;
return Math.abs(d);
}