赞
踩

-
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.Canvas;
- import android.graphics.Matrix;
- import android.graphics.Paint;
- import android.graphics.Rect;
-
- /**
- * 图片工具类
- *
- */
- public class ImageUtil {
-
- /**
- * 设置水印图片在左上角
- * @param context
- * @param src
- * 前者为原图,后者为水印图片
- * @return
- */
- public static Bitmap createWaterMaskLeftTop(
- Context context, Bitmap src, Bitmap watermark,
- int paddingLeft, int paddingTop) {
- return createWaterMaskBitmap(src, watermark,
- dp2px(context, paddingLeft), dp2px(context, paddingTop));
- }
-
- private static Bitmap createWaterMaskBitmap(Bitmap src, Bitmap watermark,
- int paddingLeft, int paddingTop) {
- if (src == null) {
- return null;
- }
- int width = src.getWidth();
- int height = src.getHeight();
- //创建一个bitmap
- Bitmap newb = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
- //将该图片作为画布
- Canvas canvas = new Canvas(newb);
- //在画布 0,0坐标上开始绘制原始图片
- canvas.drawBitmap(src, 0, 0, null);
- //在画布上绘制水印图片
- canvas.drawBitmap(watermark, paddingLeft, paddingTop, null);
- // 保存
- canvas.save(Canvas.ALL_SAVE_FLAG);
- // 存储
- canvas.restore();
- return newb;
- }
-
- /**
- * 设置水印图片在右下角
- * @param Context
- * @param src
- * @param watermark
- * @param paddingRight
- * @param paddingBottom
- * @return
- */
- public static Bitmap createWaterMaskRightBottom(
- Context context, Bitmap src, Bitmap watermark,
- int paddingRight, int paddingBottom) {
- return createWaterMaskBitmap(src, watermark,
- src.getWidth() - watermark.getWidth() - dp2px(context, paddingRight),
- src.getHeight() - watermark.getHeight() - dp2px(context, paddingBottom));
- }
-
- /**
- * 设置水印图片到右上角
- * @param context
- * @param src
- * @param watermark
- * @param paddingRight
- * @param paddingTop
- * @return
- */
- public static Bitmap createWaterMaskRightTop(
- Context context, Bitmap src, Bitmap watermark,
- int paddingRight, int paddingTop) {
- return createWaterMaskBitmap( src, watermark,
- src.getWidth() - watermark.getWidth() - dp2px(context, paddingRight),
- dp2px(context, paddingTop));
- }
-
- /**
- * 设置水印图片到左下角
- * @param context
- * @param src
- * @param watermark
- * @param paddingLeft
- * @param paddingBottom
- * @return
- */
- public static Bitmap createWaterMaskLeftBottom(
- Context context, Bitmap src, Bitmap watermark,
- int paddingLeft, int paddingBottom) {
- return createWaterMaskBitmap(src, watermark, dp2px(context, paddingLeft),
- src.getHeight() - watermark.getHeight() - dp2px(context, paddingBottom));
- }
-
- /**
- * 设置水印图片到中间
- * @param context
- * @param src
- * @param watermark
- * @return
- */
- public static Bitmap createWaterMaskCenter(Bitmap src, Bitmap watermark) {
- return createWaterMaskBitmap(src, watermark,
- (src.getWidth() - watermark.getWidth()) / 2,
- (src.getHeight() - watermark.getHeight()) / 2);
- }
-
- /**
- * 给图片添加文字到左上角
- * @param context
- * @param bitmap
- * @param text
- * @return
- */
- public static Bitmap drawTextToLeftTop(Context context, Bitmap bitmap, String text,
- int size, int color, int paddingLeft, int paddingTop) {
- Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- paint.setColor(color);
- paint.setTextSize(dp2px(context, size));
- Rect bounds = new Rect();
- paint.getTextBounds(text, 0, text.length(), bounds);
- return drawTextToBitmap(context, bitmap, text, paint, bounds,
- dp2px(context, paddingLeft),
- dp2px(context, paddingTop) + bounds.height());
- }
-
- /**
- * 绘制文字到右下角
- * @param context
- * @param bitmap
- * @param text
- * @param size
- * @param color
- * @param paddingBottom
- * @param paddingRight
- * @return
- */
- public static Bitmap drawTextToRightBottom(Context context, Bitmap bitmap, String text,
- int size, int color, int paddingRight, int paddingBottom) {
- Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- paint.setColor(color);
- paint.setTextSize(dp2px(context, size));
- Rect bounds = new Rect();
- paint.getTextBounds(text, 0, text.length(), bounds);
- return drawTextToBitmap(context, bitmap, text, paint, bounds,
- bitmap.getWidth() - bounds.width() - dp2px(context, paddingRight),
- bitmap.getHeight() - dp2px(context, paddingBottom));
- }
-
- /**
- * 绘制文字到右上方
- * @param context
- * @param bitmap
- * @param text
- * @param size
- * @param color
- * @param paddingRight
- * @param paddingTop
- * @return
- */
- public static Bitmap drawTextToRightTop(Context context, Bitmap bitmap, String text,
- int size, int color, int paddingRight, int paddingTop) {
- Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- paint.setColor(color);
- paint.setTextSize(dp2px(context, size));
- Rect bounds = new Rect();
- paint.getTextBounds(text, 0, text.length(), bounds);
- return drawTextToBitmap(context, bitmap, text, paint, bounds,
- bitmap.getWidth() - bounds.width() - dp2px(context, paddingRight),
- dp2px(context, paddingTop) + bounds.height());
- }
-
- /**
- * 绘制文字到左下方
- * @param context
- * @param bitmap
- * @param text
- * @param size
- * @param color
- * @param paddingLeft
- * @param paddingBottom
- * @return
- */
- public static Bitmap drawTextToLeftBottom(Context context, Bitmap bitmap, String text,
- int size, int color, int paddingLeft, int paddingBottom) {
- Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- paint.setColor(color);
- paint.setTextSize(dp2px(context, size));
- Rect bounds = new Rect();
- paint.getTextBounds(text, 0, text.length(), bounds);
- return drawTextToBitmap(context, bitmap, text, paint, bounds,
- dp2px(context, paddingLeft),
- bitmap.getHeight() - dp2px(context, paddingBottom));
- }
-
- /**
- * 绘制文字到中间
- * @param context
- * @param bitmap
- * @param text
- * @param size
- * @param color
- * @return
- */
- public static Bitmap drawTextToCenter(Context context, Bitmap bitmap, String text,
- int size, int color) {
- Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- paint.setColor(color);
- paint.setTextSize(dp2px(context, size));
- Rect bounds = new Rect();
- paint.getTextBounds(text, 0, text.length(), bounds);
- return drawTextToBitmap(context, bitmap, text, paint, bounds,
- (bitmap.getWidth() - bounds.width()) / 2,
- (bitmap.getHeight() + bounds.height()) / 2);
- }
-
- //图片上绘制文字
- private static Bitmap drawTextToBitmap(Context context, Bitmap bitmap, String text,
- Paint paint, Rect bounds, int paddingLeft, int paddingTop) {
- android.graphics.Bitmap.Config bitmapConfig = bitmap.getConfig();
-
- paint.setDither(true); // 获取跟清晰的图像采样
- paint.setFilterBitmap(true);// 过滤一些
- if (bitmapConfig == null) {
- bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
- }
- bitmap = bitmap.copy(bitmapConfig, true);
- Canvas canvas = new Canvas(bitmap);
-
- canvas.drawText(text, paddingLeft, paddingTop, paint);
- return bitmap;
- }
-
- /**
- * 缩放图片
- * @param src
- * @param w
- * @param h
- * @return
- */
- public static Bitmap scaleWithWH(Bitmap src, double w, double h) {
- if (w == 0 || h == 0 || src == null) {
- return src;
- } else {
- // 记录src的宽高
- int width = src.getWidth();
- int height = src.getHeight();
- // 创建一个matrix容器
- Matrix matrix = new Matrix();
- // 计算缩放比例
- float scaleWidth = (float) (w / width);
- float scaleHeight = (float) (h / height);
- // 开始缩放
- matrix.postScale(scaleWidth, scaleHeight);
- // 创建缩放后的图片
- return Bitmap.createBitmap(src, 0, 0, width, height, matrix, true);
- }
- }
-
- /**
- * dip转pix
- * @param context
- * @param dp
- * @return
- */
- public static int dp2px(Context context, float dp) {
- final float scale = context.getResources().getDisplayMetrics().density;
- return (int) (dp * scale + 0.5f);
- }
- }

- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <TextView
- android:layout_margin="10dp"
- android:gravity="center"
- android:id="@+id/sour_pic_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="原图" />
-
- <ImageView
- android:id="@+id/sour_pic"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:scaleType="centerInside"/>
-
- <TextView
- android:layout_margin="10dp"
- android:gravity="center"
- android:id="@+id/watermark_pic_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="水印" />
-
- <ImageView
- android:id="@+id/wartermark_pic"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:scaleType="centerInside"/>
- </LinearLayout>

-
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.widget.ImageView;
-
- import com.watermark.ImageUtil;
- import com.watermark.R;
- public class MainActivity extends Activity {
-
- private ImageView mSourImage;
- private ImageView mWartermarkImage;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- initView();
- }
-
- private void initView(){
- mSourImage = (ImageView) findViewById(R.id.sour_pic);
- mWartermarkImage = (ImageView) findViewById(R.id.wartermark_pic);
- Bitmap idCardBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.idcard);
- Bitmap logoBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_logo);
-
- mSourImage.setImageBitmap(idCardBitmap);
- // Bitmap watermarkBitmap = ImageUtil.createWaterMaskCenter(idCardBitmap, logoBitmap);
- Bitmap watermarkBitmap = ImageUtil.createWaterMaskLeftBottom(this, idCardBitmap, logoBitmap, 0, 0);
- // watermarkBitmap = ImageUtil.createWaterMaskRightBottom(this, watermarkBitmap, waterBitmap, 0, 0);
- // watermarkBitmap = ImageUtil.createWaterMaskLeftTop(this, watermarkBitmap, waterBitmap, 0, 0);
- // watermarkBitmap = ImageUtil.createWaterMaskRightTop(this, watermarkBitmap, waterBitmap, 0, 0);
- mWartermarkImage.setImageBitmap(watermarkBitmap);
-
- // Bitmap textBitmap = ImageUtil.drawTextToLeftTop(this, watermarkBitmap, "左上角", 16, Color.RED, 0, 0);
- // textBitmap = ImageUtil.drawTextToRightBottom(this, textBitmap, "右下角", 16, Color.RED, 0, 0);
- // textBitmap = ImageUtil.drawTextToRightTop(this, textBitmap, "右上角", 16, Color.RED, 0, 0);
- // textBitmap = ImageUtil.drawTextToLeftBottom(this, textBitmap, "左下角", 16, Color.RED, 0, 0);
- // textBitmap = ImageUtil.drawTextToCenter(this, textBitmap, "中间", 16, Color.RED);
-
- // mWartermarkImage.setImageBitmap(textBitmap);
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。