水印图片处理
如果把水印加入图片中到底怎么做 有谁贴一下这一块的代码 谢谢
如果把水印加入图片中到底怎么做 有谁贴一下这一块的代码 谢谢
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(); } } } }
举报