0

cachePath.createNewFile();の結果が無視されるという警告が表示されます。それ以外の場合、次のコードは画像を携帯電話に保存しません。私に何ができる?

holder.messageImage.setOnLongClickListener(v -> {
            v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);

            Bitmap bitmap = ((BitmapDrawable) holder.messageImage.getDrawable()).getBitmap();

            File root = Environment.getExternalStorageDirectory();
            File cachePath = new File(root.getAbsolutePath() + "/DCIM/Camera/image.jpg");

            try {
                FileOutputStream ostream = new FileOutputStream(cachePath);
                bitmap.compress(CompressFormat.JPEG, 100, ostream);
                ostream.close();
                Toast.makeText(mContext, "Image saved successfully", Toast.LENGTH_SHORT).show();
            } catch (Exception e) {
                e.printStackTrace();
                Log.w(getClass().toString(), e);
                Toast.makeText(mContext, "Failed saving image", Toast.LENGTH_SHORT).show();
            }

            return false;
        });

この方法でバックエンドから画像をダウンロードします。

private void downloadMessageImage(ViewHolder holder, int position) {
        ParseQuery<ParseObject> query = new ParseQuery<>(ParseConstants.CLASS_YEET);
        query.whereEqualTo(ParseConstants.KEY_OBJECT_ID, mYeets.get(position).getObjectId());
        query.findInBackground((user, e) -> {
            if (e == null) for (ParseObject userObject : user) {

                if (userObject.getParseFile("image") != null) {
                    String imageURL = userObject.getParseFile("image").getUrl();
                    /*Log.w(getClass().toString(), imageURL);*/

                   if (imageURL != null) {

                        holder.messageImage.setVisibility(View.VISIBLE);

                        Picasso.with(mContext)
                                .load(imageURL)
                                .placeholder(R.color.placeholderblue)
                                .into(holder.messageImage);

                    } else {
                        holder.messageImage.setVisibility(View.GONE);
                    }
                }

            }
        });
    }

ビットマップは確かに存在しません:android.graphics.Bitmap@12d9cc4

4

1 に答える 1

0

画像を保存するには、次のコードを使用します。

try {
       signature.setDrawingCacheEnabled(true);
       Bitmap bm = Bitmap.createBitmap(signature.getDrawingCache());
       // Define params for save
       File f = new File(Environment.getExternalStorageDirectory() + "/Cassiopea/momomorez/" + File.separator + "signature.png");
       f.createNewFile();
       FileOutputStream os = new FileOutputStream(f);
       os = new FileOutputStream(f);
       //compress to specified format (PNG), quality - which is ignored for PNG, and out stream
       bm.compress(Bitmap.CompressFormat.PNG, 100, os);
       Toast.makeText(mContext, "Saving image OK", Toast.LENGTH_SHORT).show();
       os.close();
} 
catch (Exception e) {
       Log.v("Gestures", e.getMessage());
       e.printStackTrace();
}

このコードを使用して、確立されたフォルダー内の画像にパターンを保存します。

于 2016-09-27T13:03:25.817 に答える