介绍
这篇文章给大家介绍如何正确的在Android中使用位图,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
一图片表示原理
图片是由每个像素点来组成像素点就是小方块
图片的大小等于宽*高*每个像素点的大小
二加载图片伯父异常
解决办法,
其中big.jpg是一张21.2 mb的高清图
public class MainActivity extends AppCompatActivity implements View.OnClickListener { ImageView 才能;mImageView; @Override才能 protected 才能;void  onCreate (Bundle savedInstanceState), { ,,,super.onCreate (savedInstanceState); ,,,setContentView (R.layout.activity_main); ,,,findViewById (R.id.load) .setOnClickListener(这个); ,,,mImageView =, findViewById (R.id.image); ,,} @Override才能 public 才能;void  onClick (View 视图),{ ,,,switch (view.getId ()), { ,,,,,case R.id.load: ,,,,,,,负载(); ,,,,,,,休息; ,,,} ,,} private 才能;void 负荷(),{ ,,,try { ,,,,,BitmapFactory.Options option =, new BitmapFactory.Options (); ,,,,,option.inJustDecodeBounds =,真的,,//只会解析图片的大小,不会加载图片的内容 ,,,,,BitmapFactory.decodeStream (getAssets () .open (“big.jpg"),空,,选项); ,,,,,//,获取图片的宽高 ,,,,,int width =, option.outWidth; ,,,,,int height =, option.outHeight; ,,,,,//,获取屏幕的宽高 ,,,,,int screenWidth =, getScreenWidth (); ,,,,,int screenHeight =, getScreenHeight (); ,,,,,//,把图片的宽高和屏幕的宽高进行对比 ,,,,,int scaleX =, width /, screenWidth; ,,,,,int scaleY =, height /, screenHeight; ,,,,,int scale =, scaleX 祝辞,scaleY ?, scaleX :,写入scaleY; ,,,,,option.inJustDecodeBounds =,假的,,//加载图片的内容 ,,,,,//,如果设置为祝辞1,请求解码器对原始数据进行子采样,例如inSampleSize==4返回图像的宽度/高度是原始图像的1/4 ,,,,,//,任何值& lt;=1都与1相同 ,,,,,option.inSampleSize =,规模; ,,,,,Bitmap Bitmap =, BitmapFactory.decodeStream (getAssets () .open (“big.jpg"),空,,选项); ,,,,,int byteCount =, bitmap.getByteCount (); ,,,,,Log.i (“HUANG",,“byteCount=? +, byteCount); ,,,,,mImageView.setImageBitmap(位图); ,,,},catch (IOException e), { ,,,,,e.printStackTrace (); ,,,} ,,}/* *,才能得到设备屏幕的宽度,(像素),* */private 才能;int  getScreenWidth (), { ,,,return getresource () .getDisplayMetrics () .widthPixels; ,,}/* *,才能得到设备屏幕的高度,(像素),* */private 才能;int  getScreenHeight (), { ,,,return getresource () .getDisplayMetrics () .heightPixels; ,,} }
三图片处理原理
Android里面所有的显示效果都是绘制出来的
用Android封装好的绘图类去绘制图片
画布:画布
漆:画笔
矩阵:图形矩阵3 * 3
位图:要绘制的图片
四图片的旋转平移缩放
其中mm.jpg是一张57 kb的图属于正常范围不需要额外处理
public class MainActivity extends AppCompatActivity implements View.OnClickListener { ImageView 才能;mImageView, mCopyView; Bitmap 才能;mBitmap; @Override才能 protected 才能;void  onCreate (Bundle savedInstanceState), { ,,,super.onCreate (savedInstanceState); ,,,setContentView (R.layout.activity_main); ,,,findViewById (R.id.change) .setOnClickListener(这个); ,,,mImageView =, findViewById (R.id.image); ,,,mCopyView =, findViewById (R.id.copy); ,,,try { ,,,,,mBitmap =, BitmapFactory.decodeStream (getAssets () .open (“mm.jpg")); ,,,,,mImageView.setImageBitmap (mBitmap); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何正确的在Android中使用位图