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 閱讀(1877) 評論(0)  編輯  收藏 所屬分類: java技術
          主站蜘蛛池模板: 上栗县| 马边| 长岭县| 大悟县| 长海县| 遵义县| 和平区| 车险| 土默特左旗| 凤台县| 阳信县| 溆浦县| 邹城市| 白城市| 平阴县| 松溪县| 红桥区| 蓬安县| 沅陵县| 龙江县| 泰安市| 乌审旗| 奉节县| 鹤山市| 井陉县| 汕尾市| 昔阳县| 高青县| 治多县| 上饶县| 若尔盖县| 东宁县| 稻城县| 哈尔滨市| 贞丰县| 额济纳旗| 清远市| 商南县| 安多县| 墨玉县| 特克斯县|