2013-07-04 62 views
0

我想像flipboard一樣爲圖像添加水印。 在Android中添加水印到圖像就像flipboard

正如你所看到的,文字被添加在黑色透明背景圖像的底部。我想要做同樣的事情。直到現在,我已經設法在圖像上寫文字,但我無法像上圖一樣將背景變成黑色透明。

這是我的代碼到目前爲止,我從here發現。

public Bitmap mark(Bitmap src, String watermark) { 
    int w = src.getWidth(); 
    int h = src.getHeight(); 

    Shader shader = new LinearGradient(0, 0, 100, 0, Color.TRANSPARENT, Color.BLACK, TileMode.CLAMP); 

    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.WHITE); 
    paint.setTextSize(50); 
    paint.setAntiAlias(true); 
    paint.setShader(shader); 
    paint.setUnderlineText(false); 
    canvas.drawText(watermark, 10 , h-15, paint); 

    return result; 
} 

回答

0

我認爲它不需要漸變,您可以使用簡單的顏色並使用drawRect()方法繪製它。

示例代碼如下,我將黑色背景大小作爲整個圖像的25%。

public Bitmap mark(Bitmap src, String watermark) { 
    int w = src.getWidth(); 
    int h = src.getHeight(); 

    Paint bgPaint=new Paint(); 
    bgPaint.setColor(Color.parse("AA000000")); //transparent black,change opacity by changing hex value "AA" between "00" and "FF" 

    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.WHITE); 
    paint.setTextSize(50); 
    paint.setAntiAlias(true); 
    paint.setUnderlineText(false); 

    //should draw background first,order is important 
    int left=0; 
    int right=w; 
    int bottom=h; 
    int top=bottom-(h*.25); 
    canvas.drawRect(left,top,right,bottom,bgPaint); 

    canvas.drawText(watermark, 10 , h-15, paint); 

return result; 
} 
+0

thnx很多伎倆...... – Mj1992