写位图与水平线混淆

时间:2014-06-06 17:51:48

标签: android bitmap draw paint porter-duff

我正试图在透明位图上绘制手指。我使用的画布画得很好,但是当我保存图像时,图像显示如下,所有水平透明线。

Saved Image

我使用以下代码绘制。

private void doDraw(Canvas canvas) {

    mOffScreenCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    for(int index = 0; index < mAnnotations.size(); index++) {
        InkAnnotation annotation = mAnnotations.get(index);

        annotation.draw(mOffScreenCanvas, ActivityPageToolBar.mCurrentTool.paint());
    }

    if(canvas != null && mSurface != null) {
        canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
        canvas.drawBitmap(mSurface, 0, 0, mPaint);
    }
}

使用

保存文件
            Bitmap saveBitmap = Bitmap.createBitmap(map);
            Canvas c = new Canvas(saveBitmap);
            c.drawColor(0xFFFFFFFF);
            c.drawBitmap(map,0,0,null);

我使用标准文件保存来保存它

try {
              FileOutputStream out = handle.outputStream();

              if(handle.fileName().contains(".png")) {
                  ((Bitmap) handle.data()).compress(CompressFormat.PNG, quality, out);
              } else if(handle.fileName().contains(".jpg") || handle.fileName().contains(".jpeg")) {
                  ((Bitmap) handle.data()).compress(CompressFormat.JPEG, quality, out);
              } else {
                  ((Bitmap) handle.data()).compress(CompressFormat.WEBP, quality, out);
              }
              out.flush();
              out.close();
          } catch(Exception e) {
              e.printStackTrace();
          }

有什么方法可以解决这个问题吗?与此同时,我将位图嵌入到pdf中,颜色比它们应该更暗。

这是我保存之前屏幕上的图像。背景是无关紧要的,我可以很好地绘制到屏幕上,但是当它保存到png时它看起来很乱。

enter image description here

1 个答案:

答案 0 :(得分:0)

我通过获取我在surfaceview上创建的点并从这些点创建一个新的位图来解决这个问题。它必须对它的位图做一些表面才能引起这种情况。