如何在 Spring 后端的图像上绘制文本并以字符串形式返回输出?

问题描述 投票:0回答:1

我想在从文件系统检索为 url 的图像上绘制文本。输出应该是字符串,这样我就可以传递到 Angular 前端并显示图像。下面是我的代码:

private String addTextToImage(String imagePath, String text, int x, int y) throws Exception {
        URL url = new URL(imagePath);
        // Fetch the image from the URL
        BufferedImage image = null;
        try {
            disableSSLCertificateChecking();
            image = ImageIO.read(url.openStream());
            // Continue processing
        } catch (Exception e) {
            
            logger.error("Error loading image from URL: " + imagePath, e);
            throw new Exception("Failed to load image", e);
        }
        // Get the graphics object from image
        Graphics2D g = (Graphics2D) image.getGraphics();
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setFont(new Font("Arial", Font.BOLD, 30)); // Set font size and style
        g.setColor(Color.BLACK); // Set text color

        // Draw the text on the image
        g.drawString(text, x, y);
        g.dispose();

        // Save image to disk for debugging (optional)
        ImageIO.write(image, "png", new File("output_with_text.png"));

        // Convert the modified image to a byte array
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(image, "png", baos);
        byte[] imageBytes = baos.toByteArray();

        // Encode the byte array to Base64 string
        return Base64.getEncoder().encodeToString(imageBytes);

    }

但是代码似乎不起作用,没有显示图像,当我导航到图像网址时,图像已损坏,知道吗?

java angular spring image text
1个回答
0
投票

你的代码看起来不错。它确实会使用您的文本生成图像的 base64。

这可能是您使用 api 的输出来显示图像的方式。

将 api 数据添加到带有

img
src="data:image/png;base64,image_data_from_api"
标签中。图像应该会显示。

以下代码,

<img src="data:image/png;base64,image_data_from_api" />
© www.soinside.com 2019 - 2024. All rights reserved.