有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

摆动错误:太阳。awt。形象ToolkitImage无法转换为java。awt。形象缓冲图像

请帮我做这件事对我有好处。awt。形象ToolkitImage无法转换为java。awt。形象缓冲图像

 if (shape.hasImage())
                    {
                        // If this shape is an image, extract image to file
                        String extension = ImageTypeToExtension(shape.getImageData().getImageType());
                        String imageFileName = MessageFormat.format("Image.ExportImages.{0} Out.{1}", imageIndex, extension);
                        String strBarCodeImageExtracted = "" + imageFileName;
                        shape.getImageData().save(strBarCodeImageExtracted);

                        // Recognize barcode from this image
                        BarCodeReader reader = new BarCodeReader ((BufferedImage) Toolkit.getDefaultToolkit().getImage(strBarCodeImageExtracted),BarCodeReadType.Code39Standard);
                        while (reader.read())
                        {
                            System.out.println("codetext: " + reader.getCodeText());
                        }
                        imageIndex++;
                    }

共 (1) 个答案

  1. # 1 楼答案

    编辑:这个答案是在写下评论后被接受的,所以我们必须假设评论是实际的解决方案。评论是

    ... to replace Toolkit.getDefaultToolkit().getImage(...) with ImageIO.read(...) ...


    原始答案:

    您可以尝试用^ {CD1>}直接读取图像,或者考虑将图像绘制成新分配的缓冲区,例如使用类似于

    的方法。
    public static BufferedImage convertToBufferedImage(Image image)
    {
        BufferedImage newImage = new BufferedImage(
            image.getWidth(null), image.getHeight(null),
            BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = newImage.createGraphics();
        g.drawImage(image, 0, 0, null);
        g.dispose();
        return newImage;
    }
    

    然后在你的情况下:

    Image image = Toolkit.getDefaultToolkit().getImage(strBarCodeImageExtracted);
    BufferedImage bufferedImage = convertToBufferedImage(image);
    BarCodeReader reader = new BarCodeReader(bufferedImage,BarCodeReadType.Code39Standard);