在我的应用程序中,我正在调用相机应用程序并拍照并将其保存在特定目录中(例如 /sdcard 等)
图片保存为 JPEG 图像。如何减小图像的大小?是否有任何可用的图像编码器或压缩可用?
我在另一个帖子中看到: Android 缩小相机图片的大小
但这是缩放图像。我正在寻找可以压缩或编码的东西。是否可以?
提前致谢,佩马尔
在我的应用程序中,我正在调用相机应用程序并拍照并将其保存在特定目录中(例如 /sdcard 等)
图片保存为 JPEG 图像。如何减小图像的大小?是否有任何可用的图像编码器或压缩可用?
我在另一个帖子中看到: Android 缩小相机图片的大小
但这是缩放图像。我正在寻找可以压缩或编码的东西。是否可以?
提前致谢,佩马尔
我不确定你是否可以尝试这个。为了首先减小图像的大小,你应该在将图像保存到特定目录之前将图像转换为位图,然后压缩位图设置图像的质量并将其写入正确的路径。可以更改图像的质量,希望这可以帮助您减小图像的大小。
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);`
接口:
compress (Bitmap.CompressFormat format, int quality, OutputStream stream)
可能下面的代码对您有用
opt = new BitmapFactory.Options();
opt.inTempStorage = new byte[16 * 1024];
opt.inSampleSize = 4;
opt.outWidth = 640;
opt.outHeight = 480;
Bitmap imageBitmap = BitmapFactory
.decodeStream(in, new Rect(), opt);
Bitmap map = Bitmap.createScaledBitmap(imageBitmap, 100, 100, true);
BitmapDrawable bmd = new BitmapDrawable(map);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
map.compress(Bitmap.CompressFormat.PNG, 90, bao);
ba = bao.toByteArray();
imagedata=Base64.encodeBytes(ba);
使用受这篇文章启发的 Glide
https://developer.android.com/topic/performance/graphics/load-bitmap
吉尔德 API
https://bumptech.github.io/glide/
// using some options for JPEG
RequestOptions myOptions = new RequestOptions()
.encodeFormat(Bitmap.CompressFormat.JPEG)
.override(1280, 1024) // this is what you need to take care of WxH
.fitCenter(); // or centerCrop
// uri may be local or web url anything
Glide.with(this).asBitmap().load(uri).apply(myOptions).listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
showSnackBar("There was some error in fetching images");
return false;
}
@Override
public boolean onResourceReady(Bitmap bitmap, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
// do whatever with the bitmap object here
return true;
}
}).submit();