一、布局中显示图片
在布局的xml中布局图片的时候用ImageView,用src去指定图片所在位置。如下代码所示,指定的就是工程目录(/res/可拉的)中文件名为未知。png的图片。
这里要注意的是Android工作室在布局时<强>只认png格式>强的图片,即使是jpeg格式,仅把后缀改为png也不行,编译时会不通过。
<代码> & lt; ImageView android: id=癅 + id/iv_mytest” 未知android: src=" https://www.yisu.com/zixun/@drawable "/祝辞代码>
但是,也不等于jpeg格式的图片就不能显示,我们可以通过如下代码处理的方式来展示到界面上。
<代码>字符串imgPath=Environment.getExternalStorageDirectory () +“test.jpg”; ImageView iv_mytest=(ImageView) findViewById (R.id.iv_mytest); iv_mytest.setVisibility (View.VISIBLE); 如果(! imgPath.equals (" ")) { 位图tempBitmap=BitmapFactory.decodeFile (imgPath); iv_mytest.setImageBitmap (tempBitmap);//显示图片 }代码>
二,拍照后显示图片
拍照流程为获取缓存图片路径→进入拍照界面→拍照界面拍照后自动存到缓存图片路径中→进入回调函数→对缓存图片进行处理(如旋转缩放等)并存储到自己指定位置→删除缓存路径图片。
具体代码如下所示:
<代码>私人字符串tmpfilename=" ";//调用拍照界面 私人空间照片(){ 尝试{//跳转至拍照界面 字符串sdStatus=Environment.getExternalStorageState (); 如果(! sdStatus.equals (Environment.MEDIA_MOUNTED)){//检测sd是否可用 ToastUtil.showToastMsgError (MyTestActivity。这一点,“SD卡不是、/可写吧。”); 返回; } tmpfilename=getTempFilePath ();=新文件(tmpfilename); 意图intentPhote=new意图(MediaStore.ACTION_IMAGE_CAPTURE); 如果(Build.VERSION。SDK_INT祝辞=24){//临时添加一个拍照权限 intentPhote.addFlags (Intent.FLAG_GRANT_READ_URI_PERMISSION);//通过FileProvider获取uri contentUri=FileProvider.getUriForFile (getActivity (), “com.tmri.rfid.eri.internet.fileProvider”); intentPhote.putExtra (MediaStore。EXTRA_OUTPUT contentUri); 其他}{ mImageCaptureUri=Uri.fromFile(出); intentPhote.putExtra (MediaStore。EXTRA_OUTPUT mImageCaptureUri); } startActivityForResult (intentPhote, 1); }捕捉(异常e) { } }/* * *获取原缓存图片存储路径 * @return */私人字符串getTempFilePath () {//照片全路径 字符串文件名=" ";//文件夹路径 字符串pathUrl=Environment.getExternalStorageDirectory () +“/tmp/? imagename=" mytest.png”; 文件文件=新文件(pathUrl); file.mkdirs();//创建文件夹 文件名=pathUrl + imagename; 返回文件名; }//拍取照后的回调 @Override 公共空间onActivityResult (int, int requestCode resultCode,意图数据){ 超级。onActivityResult (requestCode、resultCode、数据); 如果(requestCode==1,,resultCode==Activity.RESULT_OK) { BitmapFactory。选择选项=new BitmapFactory.Options (); 选项。inJustDecodeBounds=true;//设置了此属性一定要记得将值设置为假 位图的位图=BitmapFactory.decodeFile (tmpfilename);//防止伯父发生 选项。inJustDecodeBounds=false; saveMyBitmap (imagename,位图);=新老文件(Environment.getExternalStorageDirectory () +“/tmp/?; FileUtil.deleteFile(老);//删除缓存图片 字符串resultMsg="图片已保存”; ToastUtil。showToastMsgSuccess(这个,resultMsg); } }//将图像保存到SD卡中 公共空间saveMyBitmap(字符串bitName,位图mBitmap) { 字符串thisDate=formatter_date。格式(新日期()); 文件f=FileUtil.getFilePath (Environment.getExternalStorageDirectory () +“/rfid/prehairpin/? thisDate +“/? bitName); 字符串realfilepath=f.getPath (); FileOutputStream输出信号=零; 尝试{ 输出信号=new FileOutputStream (f); }捕捉(异常e) { e.printStackTrace (); } 矩阵矩阵=new矩阵();//按照固定大小对图片进行缩放 matrix.postScale (0.3, 0.3); mBitmap.getHeight System.out.println (mBitmap.getWidth () + ()); 如果(mBitmap.getHeight () & lt;mBitmap.getWidth ()) { matrix.postRotate (90);//翻转90度 } mBitmap=位图。createBitmap (mBitmap 0 0, mBitmap.getWidth (), mBitmap.getHeight(),矩阵,true); mBitmap.compress(100年Bitmap.CompressFormat.PNG,输出端); 尝试{ 输出信号。写((“我的秘密信息”).getBytes());//我在这边偷偷给图片结尾藏了一些信息 fOut.flush (); }捕捉(IOException e) { e.printStackTrace (); } 尝试{ fOut.close (); }捕捉(IOException e) { e.printStackTrace (); } }Android关于图片的处理