Вопрос по image, android – Как добавить эффект водяного знака на изображение в Android?

16

У меня есть изображение с рамками, и мне нужно добавить эффект водяного знака. Как я могу это сделать?

Ваш Ответ

5   ответов
4

perfect answer Вот

Это добавляет водяной знак кbottom right часть иscales it в соответствии с исходным изображением, которое было именно то, что я искал.

/**  
    * Embeds an image watermark over a source image to produce  
    * a watermarked one.  
    * @param watermarkImageFile The image file used as the watermark.  
    * @param sourceImageFile The source image file.  
    * @param destImageFile The output image file.  
    */  
   /**  
    * Adds a watermark on the given image.  
    */  
   public static Bitmap addWatermark(Resources res, Bitmap source) {  
     int w, h;  
     Canvas c;  
     Paint paint;  
     Bitmap bmp, watermark;  
     Matrix matrix;  
     float scale;  
     RectF r;  
     w = source.getWidth();  
     h = source.getHeight();  
     // Create the new bitmap  
     bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);  
     paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG | Paint.FILTER_BITMAP_FLAG);  
     // Copy the original bitmap into the new one  
     c = new Canvas(bmp);  
     c.drawBitmap(source, 0, 0, paint);  
     // Load the watermark  
     watermark = BitmapFactory.decodeResource(res, R.drawable.dell_logo);  
     // Scale the watermark to be approximately 40% of the source image height  
     scale = (float) (((float) h * 0.40) / (float) watermark.getHeight());  
     // Create the matrix  
     matrix = new Matrix();  
     matrix.postScale(scale, scale);  
     // Determine the post-scaled size of the watermark  
     r = new RectF(0, 0, watermark.getWidth(), watermark.getHeight());  
     matrix.mapRect(r);  
     // Move the watermark to the bottom right corner  
     matrix.postTranslate(w - r.width(), h - r.height());  
     // Draw the watermark  
     c.drawBitmap(watermark, matrix, paint);  
     // Free up the bitmap memory  
     watermark.recycle();  
     return bmp;  
   } 

И это хорошо прокомментировано, что является огромным плюсом!

Error: User Rate Limit Exceeded
-3

амки и укажите положение водяного знака.

Error: User Rate Limit Exceeded info
4

waterrippleeffect как этот. Оформить заказ с полным исходным кодом. Также проверьте скриншот, как выглядит эффект.

Error: User Rate Limit Exceeded info
34

Вот.

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);
    paint.setAlpha(alpha);
    paint.setTextSize(size);
    paint.setAntiAlias(true);
    paint.setUnderlineText(underline);
    canvas.drawText(watermark, location.x, location.y, paint);

    return result;
}

Спасибо Питу Хьюстону, который делится таким полезным уроком по базовой обработке изображений.

Error: User Rate Limit Exceeded info
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
18

если вы хотите добавить логотип вашего приложения (который находится в вашей папке (-ях) для рисования) поверх изображения, используйте следующий метод:

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.logo);
        canvas.drawBitmap(waterMark, 0, 0, null);

        return result;
    }
Error: User Rate Limit Exceeded

Похожие вопросы