android程序按着自己定义的宽高对照片进行压缩然后保存在sdcrad上然后显示在imageview
2015-09-16 · 知道合伙人软件行家
关注
展开全部
ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。
设置的方式包括:
1. 在layout xml中定义android:scaleType="CENTER"
2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);
ScaleType的值和对应的显示效果进行说明:
1. SetScaleType(ImageView.ScaleType.CENTER);
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
2. SetScaleType(ImageView.ScaleType.CENTER_CROP);
按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
3. setScaleType(ImageView.ScaleType.CENTER_INSIDE);
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
4. setScaleType(ImageView.ScaleType.FIT_CENTER);
把图片按比例扩大/缩小到View的宽度,居中显示
5. FIT_START, FIT_END在图片缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于顶部,FIT_CENTER居中,FIT_END置于底部。
6. FIT_XY
不按比例缩放图片,目标是把图片塞满整个View。
设置的方式包括:
1. 在layout xml中定义android:scaleType="CENTER"
2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);
ScaleType的值和对应的显示效果进行说明:
1. SetScaleType(ImageView.ScaleType.CENTER);
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
2. SetScaleType(ImageView.ScaleType.CENTER_CROP);
按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
3. setScaleType(ImageView.ScaleType.CENTER_INSIDE);
将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
4. setScaleType(ImageView.ScaleType.FIT_CENTER);
把图片按比例扩大/缩小到View的宽度,居中显示
5. FIT_START, FIT_END在图片缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于顶部,FIT_CENTER居中,FIT_END置于底部。
6. FIT_XY
不按比例缩放图片,目标是把图片塞满整个View。
展开全部
public Bitmap photo = null;
// 设置文件保存路径这里放在跟目录下
File picture = new File(Environment.getExternalStorageDirectory()
+ "/XXX.jpg");
uri = Uri.fromFile(picture);
startPhotoZoom(uri);
/**
* 调用系统自带截图界面
* @param 图片路径
*/
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGEUNSPECIFIED);
intent.putExtra("crop", "false");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 120);
intent.putExtra("outputY", 120);
intent.putExtra("return-data", true);
startActivityForResult(intent, 3);
}
/**
* Activity回调
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == NONE) {
return;
}
// 读取相册缩放图片
if (requestCode == 2) {
uri = data.getData();
startPhotoZoom(uri);
}
// 处理结果
if (requestCode == 3) {
Bundle extras = data.getExtras();
if (extras != null) {
photo = extras.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 50, stream); // (0 -
// 100)压缩文件
}
}
super.onActivityResult(requestCode, resultCode, data);
}
这是我自己项目中用的一个取本地图片,截图片,压缩的方法,希望对你有用吧。
// 设置文件保存路径这里放在跟目录下
File picture = new File(Environment.getExternalStorageDirectory()
+ "/XXX.jpg");
uri = Uri.fromFile(picture);
startPhotoZoom(uri);
/**
* 调用系统自带截图界面
* @param 图片路径
*/
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGEUNSPECIFIED);
intent.putExtra("crop", "false");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 120);
intent.putExtra("outputY", 120);
intent.putExtra("return-data", true);
startActivityForResult(intent, 3);
}
/**
* Activity回调
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == NONE) {
return;
}
// 读取相册缩放图片
if (requestCode == 2) {
uri = data.getData();
startPhotoZoom(uri);
}
// 处理结果
if (requestCode == 3) {
Bundle extras = data.getExtras();
if (extras != null) {
photo = extras.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 50, stream); // (0 -
// 100)压缩文件
}
}
super.onActivityResult(requestCode, resultCode, data);
}
这是我自己项目中用的一个取本地图片,截图片,压缩的方法,希望对你有用吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用截屏工具,定好长和宽的像素数,然后把图像缩小到一定比例,移动截屏框进行截屏。有点麻烦,但是高质量
追问
代码可以实现吗?
追答
没试过,但刚才那个是我知道的最佳方法。最具清晰度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己定义的没有错,但是你的手机的分辨率要和图片的额分辨率对应
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询