水印图片处理
如果把水印加入图片中到底怎么做 有谁贴一下这一块的代码 谢谢
如果把水印加入图片中到底怎么做 有谁贴一下这一块的代码 谢谢
2015-11-22
private class PhotoTask extends Thread
{
private String file;
private boolean isFinished;
public PhotoTask(String file)
{
this.file = file;
}
@Override
public void run()
{
BufferedOutputStream bos = null;
Bitmap icon = null;
try
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(file, options); //此时返回bm为空
float percent =
options.outHeight > options.outWidth ? options.outHeight / 960f : options.outWidth / 960f;
if (percent < 1)
{
percent = 1;
}
int width = (int)(options.outWidth / percent);
int height = (int)(options.outHeight / percent);
icon = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
//初始化画布 绘制的图像到icon上
Canvas canvas = new Canvas(icon);
//建立画笔
Paint photoPaint = new Paint();
//获取跟清晰的图像采样
photoPaint.setDither(true);
//过滤一些
// photoPaint.setFilterBitmap(true);
options.inJustDecodeBounds = false;
Bitmap prePhoto = BitmapFactory.decodeFile(file);
if (percent > 1)
{
prePhoto = Bitmap.createScaledBitmap(prePhoto, width, height, true);
}
canvas.drawBitmap(prePhoto, 0, 0, photoPaint);
if (prePhoto != null && !prePhoto.isRecycled())
{
prePhoto.recycle();
prePhoto = null;
System.gc();
}
//设置画笔
Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
//字体大小
textPaint.setTextSize(20.0f);
//采用默认的宽度
textPaint.setTypeface(Typeface.DEFAULT);
//采用的颜色
textPaint.setColor(Color.YELLOW);
//阴影设置
// textPaint.setShadowLayer(3f, 1, 1, Color.DKGRAY);
// 时间水印
String mark = getCurrTime("yyyy-MM-dd HH:mm:ss");
float textWidth = textPaint.measureText(mark);
canvas.drawText(mark, width - textWidth - 10, height - 26, textPaint);
bos = new BufferedOutputStream(new FileOutputStream(file));
int quaility = (int)(100 / percent > 80 ? 80 : 100 / percent);
icon.compress(CompressFormat.JPEG, quaility, bos);
bos.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
isFinished = true;
if (bos != null)
{
try
{
bos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (icon != null && !icon.isRecycled())
{
icon.recycle();
icon = null;
System.gc();
}
}
}
}举报