【问题标题】:Generate Image by Servlet [duplicate]通过 Servlet 生成图像 [重复]
【发布时间】:2014-11-26 03:39:15
【问题描述】:

这是我第一个生成图像并向客户端显示图像的 servlet,

但是commect提到的部分有编译时错误。

public class DynamicImage extends HttpServlet {

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    response.setContentType("image/jpeg");

    //create image
    int width = 200;
    int height = 30;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    //get drawing context
    Graphics2D g = (Graphics2D) image.getGraphics();
    g.setColor(Color.GRAY);
    g.fillRect(0, 0, width, height);

    //draw a string
    g.setColor(Color.WHITE);
    g.setFont(new Font("Dialog", Font.PLAIN, 14));
    g.drawString("My String!", 10, height / 2 + 4);

    //draw a border
    g.setColor(Color.BLACK);
    g.drawRect(0, 0, width - 1, height - 1);

    //dispose context
    g.dispose();

    //send back image to the client
    ServletOutputStream sos = response.getOutputStream();
    com.sun.image.codec.jpeg.JPEGImageEncoder encoder = JPEGCodec // Compile Time Error, cant find JPEGCodec

    }
}

我的 IDE (Netbeans) 找不到并导入 JPEGCodec ,如何解决?

【问题讨论】:

  • com.sun 包中的类没有记录,也不应该被使用。使用可以以 JPEG 格式写入图像的公共 API,例如 ImageIO。
  • 强烈建议不要在 servlet 中生成图像。图像应该已经存在于文件系统或数据库中;在 servlet 中这样做不仅效率低下,而且有些服务器没有显卡或 GraphicsEnvironment,因此您的图形操作可能会失败。
  • @ControlAltDel 我可以想到很多用于在服务器端生成图像的用例。在服务器端生成图像一点也不稀奇。要处理没有图形系统,只需将属性设置为无头模式:-Djava.awt.headless=true

标签: java servlets


【解决方案1】:

您需要下载 rt.jar 文件并将其添加到您的类路径中。
here下载它。
如果上面的链接不起作用,请访问here

【讨论】:

    【解决方案2】:

    看看this answer

    我建议不要使用这个类。就是头疼。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多