网友通过本文主要向大家介绍了安卓密室逃脱1第10关,如何破解安卓图形密码,安卓图形解锁破解,安卓手机图形锁破解,安卓图形密码破解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像
安卓第十五天笔记-图形图像一些简单处理
多媒体编程简介--图形的一般处理
1.计算机中图形计算的大小
一般白色就是0,黑色就是1
单色位图:
8位表示一个字节,
大小:长*宽/8,表示大小,还有一些文件信息如创建时间,什么工具创建之类的
24位位图
一个像素表示24位
大小:长*宽*24/8
256色
1个像素可以表示256种颜色 一个字节它的长度刚好是256 ,那么一个像素点就是一个字节
大小:长*宽
安卓中默认使用32位的
- 位图的缺陷
- 放大到一定的比例会出会出现失真与锯齿形状
- 占用很大的存储空间
2.加载一个图片文件到存中
将一个图片放在SD卡上,使用BitmapFactory.decodeFile解析得Bitmap设置ImageView显示
ImageView iv = (ImageView) findViewById(R.id.iv); //加载图片 //Bitmap bitmap =BitmapFactory.decodeFile("/mnt/sdcard/img7.jpg"); Bitmap bitmap =BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/img7.jpg"); //设置图片 iv.setImageBitmap(bitmap);
以上的图片可以正常加载
异常现象---加载 的图片过大,如2560*1520之类的,加载 时就会报OutMemoryError内存溢出
java.lang.OutOfMemoryError
3.设置图片的缩放
获取屏幕的大小宽和高
//1. 获取到屏幕分辨率 WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); Point outSize = new Point(); display.getSize(outSize); int x = outSize.x;
使用图片的大小宽和屏幕的宽相除,图片的高与屏幕的高相除,比大小,取最大值,或者取中间值
/** 图片设置缩放比例 @author 刘楠 * 2016-3-3下午1:20:28 */ @SuppressLint("NewApi") public class MainActivity extends Activity { private static final String TAG = "MainActivity"; /* * 源图片 */ private ImageView src; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 源图片 src = (ImageView) findViewById(R.id.src); /*Options options = new Options(); options.inJustDecodeBounds=true; BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/2.jpg",options);*/ /** * 得到屏幕的宽高 */ WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE); Display defaultDisplay = manager.getDefaultDisplay(); Point point = new Point(); defaultDisplay.getRealSize(point); int screenWidth = point.x; int screenHeight = point.y; Log.d(TAG, "屏幕宽:"+screenWidth); Log.d(TAG, "屏幕高:"+screenHeight); /* * jpg图片解析 */ try { ExifInterface jpgExifInterface = new ExifInterface( Environment.getExternalStorageDirectory() + "/2.jpg"); /* * 图片的宽度 */ String width = jpgExifInterface .getAttribute(ExifInterface.TAG_IMAGE_WIDTH); /* * 得到图片的高度 */ String height = jpgExifInterface .getAttribute(ExifInterface.TAG_IMAGE_LENGTH); Log.d(TAG, "图片宽:"+width); Log.d(TAG, "图片高:"+height); //计算比例 int scale=Integer.parseInt(width)/screenWidth>Integer.parseInt(height)/screenHeight?Integer.parseInt(width)/screenWidth:Integer.parseInt(height)/screenHeight; //设置显示 Log.d(TAG,"比例:"+scale); //调置采样率,比例 Options opts = new Options(); opts.inSampleSize=scale; //使用工厂再次解析 Bitmap decodeFile = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/2.jpg", opts); //设置图片显示 src.setImageBitmap(decodeFile); } catch (IOException e) { e.printStackTrace(); } }
4.图片的一些常用操作
只需要更改Matrix
Matrix matrix = new Matrix();
//移动第一个参数x 水平, 第二个参数y高度,可以是负值
/*
* degrees角度:
* px:开始旋转的水平坐标
* py:开始旋转的垂直坐标
*/
matrix.setRotate(90, bitmap.getWidth()/2, bitmap.getHeight()/2);
前者是在原图基础上做变化,后者是在目前的效果基础上做变化
5.自定义画板涂鸦
布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layoutwidth="matchparent" android:layoutheight="matchparent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:orientation="horizontal" > <!-- 画笔颜色 --> <View android:id="@+id/red" android:layout_width="50dp" android:layout_height="50dp" android:background="#ff0000" /> <View android:id="@+id/green" android:layout_width="50dp" android:layout_height="50dp" android:background="#00ff00" /> <View android:id="@+id/blue" android:layout_width="50dp" android:layout_height="50dp" android:background="#0000ff" /> <View android:id="@+id/yellow" android:layout_width="5