posts - 3,  comments - 2,  trackbacks - 0
            2010年2月9日
          private void compressImageFile() {
                  JFileChooser fileChooser = new JFileChooser("d://");
                  fileChooser.showOpenDialog(this);
                  File file = fileChooser.getSelectedFile();
          
                  if (null != file && file.exists()) {
                      Toolkit toolkit = Toolkit.getDefaultToolkit();
                      Image srcImage = toolkit.getImage(file.getAbsolutePath()); // 構造Image對象
                      int wideth = -1;
                      int height = -1;
                      boolean flag = true;
                      while (flag) {
                          wideth = srcImage.getWidth(null); // 得到源圖寬
                          height = srcImage.getHeight(null); // 得到源圖長
                          System.out.println("wideth:" + wideth + " height:" + height);
                          if (wideth > 0 && height > 0) { // 因為 Toolkit.getImage 是異步讀取,如果
                                                          // wideth 和 height
                                                          // 都大于0,表明圖片已經加載完畢
                          // imageCanvas.setImage(srcImage);
                              flag = false;
                          } else {
                              try {
                                  Thread.sleep(10);
                              } catch (Exception e) {
                                  e.printStackTrace();
                              }
                          }
                      }
          
                      // 加載完畢,輸出
                      int w = 1024;
                      float s = (float) wideth / 1024.0f;
                      int h = (int) ((float) height / s);
                      BufferedImage bufferedImage = new BufferedImage(w, h,
                              BufferedImage.TYPE_INT_RGB);
                      // bufferedImage.getGraphics().drawImage(srcImage, 0, 0, 1024,
                      // 768, null); // 繪制縮小后的圖
                      boolean flag2 = false;
                      while (!(flag2 = bufferedImage.getGraphics().drawImage(srcImage, 0,
                              0, w, h, this))) {
                          try {
                              Thread.sleep(10);
                          } catch (Exception e) {
                              e.printStackTrace();
                          }
                      }
          
                      try {
          
                          File outputFile = new File("d://hhh.jpg");
                          if (!outputFile.exists()) {
                              outputFile.createNewFile();
                          }
                          FileOutputStream out = new FileOutputStream(outputFile); // 輸出到文件流
                          JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                          encoder.encode(bufferedImage); // 近JPEG編碼
                          out.close();
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
              }
          posted @ 2010-02-09 15:37 Mr. Michael.Q 閱讀(219) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 兴文县| 安义县| 轮台县| 儋州市| 子洲县| 浦县| 确山县| 开化县| 江达县| 衢州市| 濮阳市| 万盛区| 乐至县| 恭城| 金平| 时尚| 西乌珠穆沁旗| 肃宁县| 岱山县| 汤阴县| 壤塘县| 富源县| 天柱县| 祁阳县| 岑巩县| 榆林市| 孝昌县| 铁力市| 彭阳县| 项城市| 东乡| 定安县| 锡林浩特市| 高邑县| 微山县| 柞水县| 长子县| 平远县| 定边县| 泽普县| 屯留县|