0

透明なビットマップに指で描画しようとしています。私が使用しているキャンバスは画像をうまく描画しますが、画像を保存すると、画像は次のように表示され、水平方向の透明な線がすべて表示されます。

保存された画像

次のコードを使用して描画します。

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に保存するとめちゃくちゃに見えます。

ここに画像の説明を入力

4

1 に答える 1

0

サーフェスビューで作成したポイントを取得し、それらのポイントから新しいビットマップを作成することで、これを解決しました。これを引き起こすには、サーフェスがビットマップに対して行う何かが必要です。

于 2014-06-10T14:44:59.457 に答える