使用 Glide Library 保存后图像质量很差
Image quality is bad after saving using Glide Library
你好我正在尝试将下载的图片保存到设备存储中我有这种方法可以将图片保存到存储中但是保存后我发现图片质量很差请帮助我我想用相同的原始图片保存图片质量
Glide.with(mContext)
.load("YOUR_URL")
.asBitmap()
.into(new SimpleTarget<Bitmap>(100,100) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
saveImage(resource);
}});
private String saveImage(Bitmap image) {
String savedImagePath = null;
String imageFileName = "JPEG_" + "FILE_NAME" + ".jpg";
File storageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ "/YOUR_FOLDER_NAME");
boolean success = true;
if (!storageDir.exists()) {
success = storageDir.mkdirs();
}
if (success) {
File imageFile = new File(storageDir, imageFileName);
savedImagePath = imageFile.getAbsolutePath();
try {
OutputStream fOut = new FileOutputStream(imageFile);
image.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.close();
} catch (Exception e) {
e.printStackTrace();
}
// Add the image to the system gallery
galleryAddPic(savedImagePath);
Toast.makeText(mContext, "IMAGE SAVED"), Toast.LENGTH_LONG).show();
}
return savedImagePath;
}
private void galleryAddPic(String imagePath) {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(imagePath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
sendBroadcast(mediaScanIntent);
}
您的 Bitmap.compress 已经是最高画质了,您可以将格式更改为 PNG,但是您将无法对图像进行压缩,因为 PNG 是一种无损格式。
您也可以更改图像的尺寸,将 SimpleTarget<Bitmap>(100,100)
更改为原始尺寸。
这一行:
.into(new SimpleTarget<Bitmap>(100,100)
字面上的意思就是你想要宽100px高100px的图片,真的很小,我99.99%确定这就是你的意思 "bad quality".
如果你想要 100% 的原始图像,你应该使用这个:
.into(new SimpleTarget<Bitmap>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
"Target" 是 Glide 中的一个 class,它有 "SIZE_ORIGINAL" 常量。
这将为您提供原始质量的完整图像,然后您可以将其保存。
你好我正在尝试将下载的图片保存到设备存储中我有这种方法可以将图片保存到存储中但是保存后我发现图片质量很差请帮助我我想用相同的原始图片保存图片质量
Glide.with(mContext)
.load("YOUR_URL")
.asBitmap()
.into(new SimpleTarget<Bitmap>(100,100) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
saveImage(resource);
}});
private String saveImage(Bitmap image) {
String savedImagePath = null;
String imageFileName = "JPEG_" + "FILE_NAME" + ".jpg";
File storageDir = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ "/YOUR_FOLDER_NAME");
boolean success = true;
if (!storageDir.exists()) {
success = storageDir.mkdirs();
}
if (success) {
File imageFile = new File(storageDir, imageFileName);
savedImagePath = imageFile.getAbsolutePath();
try {
OutputStream fOut = new FileOutputStream(imageFile);
image.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.close();
} catch (Exception e) {
e.printStackTrace();
}
// Add the image to the system gallery
galleryAddPic(savedImagePath);
Toast.makeText(mContext, "IMAGE SAVED"), Toast.LENGTH_LONG).show();
}
return savedImagePath;
}
private void galleryAddPic(String imagePath) {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(imagePath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
sendBroadcast(mediaScanIntent);
}
您的 Bitmap.compress 已经是最高画质了,您可以将格式更改为 PNG,但是您将无法对图像进行压缩,因为 PNG 是一种无损格式。
您也可以更改图像的尺寸,将 SimpleTarget<Bitmap>(100,100)
更改为原始尺寸。
这一行:
.into(new SimpleTarget<Bitmap>(100,100)
字面上的意思就是你想要宽100px高100px的图片,真的很小,我99.99%确定这就是你的意思 "bad quality".
如果你想要 100% 的原始图像,你应该使用这个:
.into(new SimpleTarget<Bitmap>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
"Target" 是 Glide 中的一个 class,它有 "SIZE_ORIGINAL" 常量。
这将为您提供原始质量的完整图像,然后您可以将其保存。