我正在尝试使用Glide从View中保存我的图像...
Glide.with(mContext).asBitmap().load(zoneSetupViewPaint.getDrawingCache())
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull final Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
Log.d("COLOR", " hereee " );
fixBitmap = resource;
}
}
);
然后我这样做:
fixBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
我想知道它是否可能。这个不起作用,我尝试将我的视图转换为位图,但我失去了质量。我也试过使用Drawable with Glide,但这不起作用。
要使用Glide下载和保存图像,请使用以下代码:
Glide.with(this)
.as(byte[].class)
.load(photoPath)
.apply(new RequestOptions()
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.format(DecodeFormat.PREFER_ARGB_8888))
.into(new SimpleTarget<byte[]>() {
@Override
public void onResourceReady(@NonNull byte[] resource, @Nullable Transition<? super byte[]> transition) {
new SaveTask(new SaveTask.SimpleListener() {
@Override
public void onPostExecute(File savedFile) {
if (getActivity() == null) return;
CustomToast.showSuccess(getActivity(), R.string.image_saved_in_gallery);
}
}, "jpg").execute(resource);
}
});
save task.Java
public class SaveTask extends AsyncTask<byte[], Void, File> {
private Listener mListener;
private String mExtension;
public SaveTask(Listener listener, String extension) {
mListener = listener;
mExtension = extension != null && !extension.isEmpty() ? extension : "jpg";
}
@Override
protected void onPreExecute() {
if (mListener != null) mListener.onPreExecute();
}
@Override
protected File doInBackground(byte[]... params) {
File sdcard = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File file = new File(String.format("%s%s%s%sIMG_%s.%s", sdcard, File.separator, MainApplication.getAppContext().getString(R.string.app_name), File.separator, new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date()), mExtension));
File dir = file.getParentFile();
try {
if (!dir.mkdirs() && (!dir.exists() || !dir.isDirectory())) {
throw new IOException("Cannot ensure parent directory for file " + file);
}
BufferedOutputStream s = new BufferedOutputStream(new FileOutputStream(file));
s.write(params[0]);
s.flush();
s.close();
return file;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(File savedFile) {
if (mListener != null) mListener.onPostExecute(savedFile);
if (savedFile == null) return;
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(Uri.fromFile(savedFile));
MainApplication.getAppContext().sendBroadcast(intent);
}
public interface Listener {
void onPreExecute();
void onPostExecute(File savedFile);
}
public static class SimpleListener implements Listener {
public void onPreExecute() {}
public void onPostExecute(File savedFile) {}
}
}
您可以随意更改文件保存路径。