如何删除旋转位图后出现的黑色背景?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除旋转位图后出现的黑色背景?相关的知识,希望对你有一定的参考价值。

如何删除rotating bitmap之后的黑色背景?我尝试了不同的方法,但似乎没有一种方法可行。请帮我找个出路! 这是我生成的代码

图片:

<!-- language: lang-java -->
         if (view.getId() == R.id.save_btn) {
                        emojiOn = false;
                        timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
                        drawView.setDrawingCacheEnabled(true);
                        if (drawView.getDrawingCache() != null)
                            drawView.destroyDrawingCache();
                        drawView.buildDrawingCache();
                        AlertDialog.Builder saveDialog = new AlertDialog.Builder(this);
                        saveDialog.setTitle("Save drawing");
                        saveDialog.setMessage("Save drawing to device Gallery?");
                        saveDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {

                                Matrix matrix = new Matrix();
                                matrix.setRotate(Rotation);
                                Bitmap b = drawView.getDrawingCache();
                                b = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), matrix, true);

                                String imgSaved = MediaStore.Images.Media.insertImage(getContentResolver(), b, timeStamp, "drawing");

                                if (imgSaved != null)
                                    Toast.makeText(getApplicationContext(), "Drawing saved to gallery!", Toast.LENGTH_SHORT).show();
                                else
                                    Toast.makeText(getApplicationContext(), "Oops! Image could not be saved.", Toast.LENGTH_SHORT).show();
                                drawView.destroyDrawingCache();
                            }
                        });
                        saveDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.cancel();
                            }
                        });
                        saveDialog.show();
                    }
答案

您必须使用位图对象b.setHasAlpha(true);在声明位图后立即放置该行代码。

以上是关于如何删除旋转位图后出现的黑色背景?的主要内容,如果未能解决你的问题,请参考以下文章

视图在方向更改时旋转时的黑色背景

如何删除android Viewpager周围显示的黑色边框

Imagemagick 旋转透明图像上不需要的黑色背景

我可以更改 iphone 应用程序的黑色背景吗?

jQuery图片360度旋转插件spritespin如何加入选择按钮?

Android opengl 画文字,怎么把文字后面的黑色背景去掉