使用视图滑动与android工作室

问题描述 投票:-1回答:1

我正在尝试使用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,但这不起作用。

android image android-glide
1个回答
0
投票

要使用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) {}
    }
}

您可以随意更改文件保存路径。

© www.soinside.com 2019 - 2024. All rights reserved.