问答详情
源自:4-1 总结

水印图片处理

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

提问者:大白小白 2015-11-22 15:44

个回答

  • Li成伟
    2016-06-27 11:30: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();
                    }
                }
            }
        }


  • qq_不想问_0
    2015-12-21 14:19:02

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