Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存图像时出错视图宽度和高度必须为>;0_Java_Android_Bitmap - Fatal编程技术网

Java 保存图像时出错视图宽度和高度必须为>;0

Java 保存图像时出错视图宽度和高度必须为>;0,java,android,bitmap,Java,Android,Bitmap,我想将imageView保存到sd卡中,但当我尝试从imageView获取位图时,出现以下异常(有时不总是)。谁能帮帮我吗?提前谢谢 Caused by: java.lang.IllegalArgumentException: width and height must be > 0 at android.graphics.Bitmap.createBitmap(Bitmap.java:922) 我认为例外是因为d.getIntrinsicWidth(),d.getIntrinsicH

我想将imageView保存到sd卡中,但当我尝试从imageView获取位图时,出现以下异常(有时不总是)。谁能帮帮我吗?提前谢谢

Caused by: java.lang.IllegalArgumentException: width and height must be > 0 at android.graphics.Bitmap.createBitmap(Bitmap.java:922)


我认为例外是因为
d.getIntrinsicWidth(),d.getIntrinsicHeight()
第行
bitmap=bitmap.createBitmap(d.getIntrinsicWidth(),d.getIntrinsicHeight(),bitmap.Config.ARGB_8888)


根据
drawable.getIntrinsicWidth()
返回底层可绘制对象的内部宽度。如果没有固有宽度(例如纯色),则返回-1。因此,请确保将大于1的值传递给
Bitmap.createBitmap()
method

此错误是因为
d.getIntrinsicWidth(),d.getIntrinsicHeight()
返回0请尝试输入一些常量值,然后像100一样进行检查。

您在这里想做什么?Drawable d=mImageView.getDrawable();bitmap=bitmap.createBitmap(d.getIntrinsicWidth()、d.getIntrinsicHeight()、bitmap.Config.ARGB_8888);画布=新画布(位图);d、 绘画(画布);顺便说一句,还有一个问题。。。你说有时发生是什么意思。。它是为不同的图像。。或者对于同一个图像,有时会发生这种情况?我使用3台设备测试了该应用程序,效果很好,但它发生在用户设备上。我无法重复它来查看测试设备上的问题。我使用以下代码设置imageView,我使用transparentDrawable来解决毕加索包装内容问题transparentDrawable.setBounds(新Rect(0,0,1000,1000));毕加索.with(mContext).加载(((FBPhotoCard)mImageCards.get(position)).getThumbnail()).占位符(可透明绘制).noFade().到(holder.imageView)中;
public static class SaveImageToSD extends AsyncTask<String, Void, String> {

    Context context;
    ImageView mImageView;
    ProgressDialog progressDialog;

    public SaveImageToSD(Context context, ImageView iv, String name) {
        this.context = context;
        this.mImageView = iv;
    }

    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(context, "", context.getResources().getString(R.string.please_wait), true);
    }

    @Override
    protected void onPostExecute(String result) {

    }

    @Override
    protected String doInBackground(String... x) {

        File projectFolder = new File(Environment.getExternalStorageDirectory() + File.separator + Settings.projectFolder + File.separator);
        boolean folderCreateSuccess = true;
        if (!projectFolder.exists()) {
            folderCreateSuccess = projectFolder.mkdir();
        }
        if (folderCreateSuccess) {
            Bitmap bitmap;
            // Exception in if statement
            if (mImageView.getDrawable() instanceof BitmapDrawable) {
                bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();
            } else {
                Drawable d = mImageView.getDrawable();
                bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
                Canvas canvas = new Canvas(bitmap);
                d.draw(canvas);
            }
            File image = new File(projectFolder, "GE_" + System.currentTimeMillis() + ".jpg");
            boolean success = false;

            // Encode the file as a PNG image.
            FileOutputStream outStream;
            try {

                outStream = new FileOutputStream(image);
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
            /* 100 to keep full quality of the image */

                outStream.flush();
                outStream.close();
                ContentValues values = new ContentValues();
                values.put(MediaStore.Images.Media.TITLE, "title");
                values.put(MediaStore.Images.Media.DESCRIPTION, "description");
                values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
                values.put(MediaStore.Images.ImageColumns.BUCKET_ID, image.toString().toLowerCase(Locale.US).hashCode());
                values.put(MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME, image.getName().toLowerCase(Locale.US));
                values.put("_data", image.getAbsolutePath());

                ContentResolver cr = context.getContentResolver();
                cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
                success = true;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
            progressDialog.dismiss();
            if (success) {
                ((ActionBarActivity)context).runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(context, context.getResources().getString(R.string.image_successfully_saved), Toast.LENGTH_SHORT).show();
                    }
                });

            } else {
                ((ActionBarActivity)context).runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(context, context.getResources().getString(R.string.image_successfully_saved), Toast.LENGTH_SHORT).show();
                    }
                });
            }

        } else {
            Log.i("Create Folder", "Error during create folder");
        }
        return "";
    }
}
transparentDrawable.setBounds(new Rect(0, 0, 1000, 1000));
Picasso.with(mContext).load(((FBPhotoCard) mImageCards.get(position)).getThumbnail()).placeholder(transparentDrawable).noFade().into(holder.imageView);