【问题标题】:Add watermark image in android在android中添加水印图像
【发布时间】:2017-01-12 03:11:08
【问题描述】:

我有代码可以像这样在图像中添加水印

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);

但是什么也没发生,你能帮帮我吗?谢谢

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    它解决了,我只是对那个代码做了一点改动,感谢你的建议 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);
    

    【讨论】:

      【解决方案2】:

      您没有将返回的位图result 分配给任何东西。用新的位图替换旧的位图。

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

      编辑:

      根据 cmets,您仍然遇到问题:尝试硬编码一些参数以进行测试。查看它是否与您的参数有关。

              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
      

      【讨论】:

      • @yaLya 查看我的编辑。确定您的代码必须包含第一位。但你似乎有两个问题。尝试像我一样对参数进行硬编码。看看会发生什么。如果这可行,请检查您的参数,看看哪个有问题。 :)
      • 对不起,但什么也没发生,我的水印图像代码是错误的:(
      【解决方案3】:
      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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-27
        • 2014-03-18
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        • 1970-01-01
        相关资源
        最近更新 更多