yegucheng

BlogJava 首页 新随笔 联系 聚合 管理
  9 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

这里使用了java的javax.imageio.ImageIO类,对于不同图片的支持扩展,在java的扩展包里面:
com.sun.imageio.plugins.XXX, 其中XXX为图片格式,目前默认支持jpg,bmp,gif,png和wbmp格式,各种图片处理扩展类可以通过IIORegistry进行注册,在解析过程中,ImageIO会根据不同的格式类型寻找匹配的解析类,当然这些不需要我们去做,下面是缩小图片的代码

  /**
   * <p>缩小图片。</p>
   * @author 刘建峰
   * @param img 原始图片
   * @param formatName 图片类型
   * @param out 输出流
   * @param length 图片长都
   * @throws ImageFormatException
   * @throws IOException
   */
resizeImage(Image img, String formatName,
      OutputStream out, long length) throws ImageFormatException, IOException {
    if (StringUtils.isEmpty(formatName)) {
      return;
    }
    int oldWidth = img.getWidth(null);
    int oldHeight = img.getHeight(null);
    int newWidth = oldWidth;
    int newHeight = oldHeight;
    if (length > maxImageSize) {//需要对图片进行缩放,计算新图片的大小
      BigDecimal scale = BigDecimal.valueOf(maxImageSize).divide(
          BigDecimal.valueOf(length), 3, BigDecimal.ROUND_DOWN);
      scale = BigDecimal.valueOf(Math.sqrt(scale.doubleValue()));
      newWidth = BigDecimal.valueOf(newWidth).multiply(scale).intValue();
      newHeight = BigDecimal.valueOf(newHeight).multiply(scale).intValue();
    }
    BufferedImage newImage = new BufferedImage(newWidth, newHeight,
        BufferedImage.TYPE_INT_RGB);//构造一个缓冲图片对象
    newImage.getGraphics().drawImage(img, 0, 0, newWidth, newHeight, null);//绘制新图像
    ImageIO.write(newImage, formatName, out);将图形以format的格式写入输出流
    out.close();
  }

posted on 2007-12-15 16:06 yegucheng 阅读(1862) 评论(0)  编辑  收藏 所属分类: java技术

只有注册用户登录后才能发表评论。


网站导航: