各位高手请帮忙解答:用java处理图片,在图片右下角加一段文字,并且设置文字的颜色,和文字的背景色,主要目的是形成文字和图片反色的效果,
在线等答案,项目真实需求!

解决方案 »

  1.   

    要具体代码?   如果是思路的话我建议你在update方法里面做文章
      

  2.   

    Graphics  drawString(String str, int x, int y) 记得以前做过,但是记不清是用什么函数写的了
    有可能是这个函数吧
      

  3.   

    我已经做出来了,  封装到一个方法里面:其实就是就是画一个矩形就能实现功能,然后设置矩形的背景颜色:
    /**
     * 1,图片缩放功能 2,在图片文件右下角加上文件目录的名字
     * 
     * @param list 文件的集合
     * @param widthdist 缩放图片的宽
     * @param heightdist 缩放图片的高
     * @return list 经过处理后的图片集合
     */ public static List<File> reduceImg(Map<String, File> map, int widthdist, int heightdist)
    {
    List<File> listFile = new ArrayList<File>();
    if (map.size() > 0)
    {
    Set<String> set = map.keySet();
    for (Iterator<String> iterator = set.iterator(); iterator.hasNext();)
    {
    String fileName = iterator.next();
    if (!map.get(fileName).isDirectory())
    {
    File imgTarget = null;
    Image src = null;
    imgTarget = new File(ConfigUtil.getWorkPath(), "data/GaoGaoMmsTemp/" + map.get(fileName).getName());
    try
    {
    src = javax.imageio.ImageIO.read(map.get(fileName));
    BufferedImage tag = new BufferedImage(widthdist, heightdist, BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist, Image.SCALE_SMOOTH), 0, 0, null);
    FileOutputStream out = new FileOutputStream(imgTarget); // 把图片写到临时目录
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    encoder.encode(tag);
    out.close();
    }
    catch (IOException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } BufferedImage image = null;
    try
    {
    image = ImageIO.read(imgTarget); }
    catch (IOException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    Graphics g = image.getGraphics();
    ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 去除锯齿(当设置的字体过大的时候,会出现锯齿)
    g.drawRect(255, 360, image.getHeight()-20, 40) ;
    g.setColor(Color.white);
    g.fillRect(255, 360, image.getHeight()-20, 40);
    String temp = fileName.substring(0, 5);
    g.setColor(Color.blue);
    g.setFont(new Font("微软雅黑", Font.BOLD, 50)); // 设置字体
    g.drawString(temp, image.getWidth() - 145, image.getHeight()); // 设置ps上去的文字的坐标位置和文字的内容
    try
    {
    ImageIO.write(image, "JPEG", imgTarget);
    }
    catch (IOException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    listFile.add(imgTarget); }
    else
    {
    log.info("文件路径错误!");
    }
    }
    }
    else
    {
    log.info("文件参数为空!");

    }
    System.out.println(listFile);
    return listFile;
    }