htmltoimage的java实现
来源:优易学  2011-12-20 14:00:32   【优易学:中国教育考试门户网】   资料下载   IT书店
  setLocation(0, 0);
  Thread.sleep(5 * 1000);
  setSize(10000, 10000);
  pack();
  // BufferedImage image = new BufferedImage(editorPane.getWidth(),
  // editorPane.getHeight(), BufferedImage.TYPE_INT_RGB);
  BufferedImage image = new BufferedImage(editorPane.getWidth(),
  editorPane.getHeight(), BufferedImage.TYPE_INT_RGB);
  Graphics2D graphics2D = image.createGraphics();
  editorPane.paint(graphics2D);
  BufferedImage image1=resize(image, 450, 600);
  ImageIO.write(image1, "jpg", file);
  dispose();
  }
  public static void main(String[] args) throws Exception {
  new ScreenDemo("http://www.baidu.com", new File("d:/file.jpg"));
  }
  public static BufferedImage resize(BufferedImage source, int targetW,
  int targetH) {
  // targetW,targetH分别表示目标长和宽
  int type = source.getType();
  BufferedImage target = null;
  double sx = (double) targetW / source.getWidth();
  double sy = (double) targetH / source.getHeight();
  // 这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
  // 则将下面的if else语句注释即可
  if (sx > sy) {
  sx = sy;
  targetW = (int) (sx * source.getWidth());
  // } else {
  // sy = sx;
  // targetH = (int) (sy * source.getHeight());
  }
  if (type == BufferedImage.TYPE_CUSTOM) { // handmade
  ColorModel cm = source.getColorModel();
  WritableRaster raster = cm.createCompatibleWritableRaster(targetW,
  targetH);
  boolean alphaPremultiplied = cm.isAlphaPremultiplied();
  target = new BufferedImage(cm, raster, alphaPremultiplied, null);
  } else
  target = new BufferedImage(targetW, targetH, type);
  Graphics2D g = target.createGraphics();
  // smoother than exlax:
  g.setRenderingHint(RenderingHints.KEY_RENDERING,
  RenderingHints.VALUE_RENDER_QUALITY);
  g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
  g.dispose();
  return target;
  }
  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训