Android之从SD卡加载大图片
2016-07-05 13:14
579 查看
和加载小图片一样,首先要让图片存放于Genymotion的SD卡,上篇已经讲了怎么放了,可以看下上篇,这里就不在说了。。
加载大图片比小图片要复杂一点,要获取屏幕的宽高和图片的宽高,而且大图片放的更清晰了。
代码如下:
布局和上篇的一样
MainActivity:
权限:
效果图:
要源码的点这儿
加载大图片比小图片要复杂一点,要获取屏幕的宽高和图片的宽高,而且大图片放的更清晰了。
代码如下:
布局和上篇的一样
MainActivity:
public class MainActivity extends Activity { /* * 从SD卡里加载图片 */ private ImageView iv; public void loadImage(View view) { // TODO Auto-generated method stub if (Environment.getExternalStorageState(). equals(Environment.MEDIA_MOUNTED)) { //路径 String path=Environment.getExternalStorageDirectory()+ "/img_big_1.jpg"; //获取屏幕的宽,高 WindowManager windowManager=(WindowManager) getSystemService(WINDOW_SERVICE); // int screenWidth=windowManager.getDefaultDisplay().getWidth(); // int screenHeight=windowManager.getDefaultDisplay().getHeight();//过时了 Display display=windowManager.getDefaultDisplay(); Point point=new Point(); display.getSize(point); int screenWidth=point.x; int screenHeight=point.y; System.out.println(screenWidth); System.out.println(screenHeight); //获取原图的宽高 try { ExifInterface exifInterface=new ExifInterface(path); int imageWidth=exifInterface.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0); int imageHeight=exifInterface.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0); int sampleWidth=(int)(imageWidth*1.0f/screenWidth+0.5f);//加0.5就是为了四舍五入 int sampleHeight=(int)(imageHeight*1.0f/screenHeight+0.5f); int sample=(int)(Math.sqrt(sampleWidth*sampleWidth+sampleHeight*sampleHeight)+0.5f); Options options=new Options(); //设置图片的采样率 //options.inSampleSize=4;//原宽*1/4 原高*1/4 options.inSampleSize=sample; //Bitmap bitmap=BitmapFactory.decodeFile(path); //iv.setImageBitmap(bitmap); Bitmap bitmap=BitmapFactory.decodeFile(path,options); iv.setImageBitmap(bitmap); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv=(ImageView) findViewById(R.id.iv); } }
权限:
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
效果图:
要源码的点这儿
相关文章推荐
- Android之使用Http协议实现文件上传功能
- 菜鸟说给菜鸟听之Beginning Linux Programming——Chapter1(1)
- Android打造带透明圆弧的ImageView
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片
- 图片引发的溢出危机(图)
- C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法
- sqlserver FOR XML PATH 语句的应用
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- 如何使用C#从word文档中提取图片
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- C#图片添加水印的实现代码
- jQuery点缩略图弹出层显示大图片
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- C#实现将Email地址转成图片显示的方法