6

このような画像に透かしを追加するコードがあります

public static Bitmap mark(Bitmap src, String watermark, Point location, Color color, int alpha, int size, boolean underline) {
            int w = src.getWidth();
            int h = src.getHeight();
            Bitmap result = Bitmap.createBitmap(w, h, src.getConfig());

            Canvas canvas = new Canvas(result);
            canvas.drawBitmap(src, 0, 0, null);

            Paint paint = new Paint();
            paint.setColor(color.RED);
            paint.setAlpha(alpha);
            paint.setTextSize(size);
            paint.setAntiAlias(true);
            paint.setUnderlineText(underline);
            canvas.drawText(watermark, location.x, location.y, paint);

            return result;
        }

そして、このコードでその関数を呼び出します

mark(bitmap, "watermark", b, null, c, 100, false);
            imgshoot.setImageBitmap(bitmap);

でも何も起こりません、助けてくれませんか?? ありがとう

4

3 に答える 3

10

それは解決しました、私はそのコードをほとんど変更しませんでした、そしてあなたのアドバイスに感謝します Doomsknight :)

 public static Bitmap mark(Bitmap src, String watermark) {
    int w = src.getWidth();
    int h = src.getHeight();
    Bitmap result = Bitmap.createBitmap(w, h, src.getConfig());
    Canvas canvas = new Canvas(result);
    canvas.drawBitmap(src, 0, 0, null);
    Paint paint = new Paint();
    paint.setColor(Color.RED);
    paint.setTextSize(18);
    paint.setAntiAlias(true);
    paint.setUnderlineText(true);
    canvas.drawText(watermark, 20, 25, paint);

    return result;
}

そして、私はこの関数で呼び出します

bitmap = mark(bitmap, "Hallo");
imgshoot.setImageBitmap(bitmap);
于 2012-11-09T03:33:15.563 に答える
2

返されたビットマップを何にも割り当てていませんresult。古いビットマップを新しいビットマップに置き換えます。

 bitmap = mark(bitmap, "watermark", b, null, c, 100, false);
 imgshoot.setImageBitmap(bitmap);

編集:

コメントによると、まだ問題があります。テストするには、いくつかのパラメータをハードコーディングしてみてください。パラメータに問題があるかどうかを確認します。

        Paint paint = new Paint();
        paint.setColor(color.RED);
        //paint.setAlpha(alpha);
        paint.setTextSize(20); //size
        //paint.setAntiAlias(true);
        paint.setUnderlineText(underline);
        canvas.drawText(watermark, 10, 10, paint); //location.x, location.y
于 2012-11-07T09:44:31.080 に答える
1
private Bitmap addWaterMark(Bitmap src) 
{
    int w = src.getWidth();
    int h = src.getHeight();
    Bitmap result = Bitmap.createBitmap(w,h,src.getConfig());
    Canvas canvas = new Canvas(result);
    canvas.drawBitmap(src,0,0, null);
    Bitmap waterMark = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ic_laucher);
    canvas.drawBitmap(waterMark,0,0,null);

    return result;
}
于 2015-11-25T17:27:26.800 に答える