为了账号安全,请及时绑定邮箱和手机立即绑定

水印图片处理

如果把水印加入图片中到底怎么做 有谁贴一下这一块的代码 谢谢

正在回答

2 回答

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


0 回复 有任何疑惑可以回复我~

这个貌似网上一堆啊  随便拿个来就可以用啊

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

水印图片处理

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信