privatesoul 2013-06-06 03:44 采纳率: 0%
浏览 3819

import com.sun.image.codec.jpeg.JPEGCodec;Eclipse编译无法通过

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
这两个包在编译期间无法通过,设置了forbidden reference(access rules) 为warning
但是编译还是没有办法通过,完整代码如下:

package com.demo.util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ImageUtil {
    private static final char[] chars = { '0', '1', '2', '3', '4', '5', '6',
            '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
    private static final int SIZE = 4;
    private static final int LINES = 20;
    private static final int WIDTH = 100;
    private static final int HEIGHT = 60;
    private static final int FONT_SIZE = 40;

    public static Map<String, BufferedImage> createImage() {
        StringBuffer sb = new StringBuffer();
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
                BufferedImage.TYPE_INT_BGR);
        Graphics graphics = image.getGraphics();
        graphics.setColor(Color.LIGHT_GRAY);
        graphics.fillRect(0, 0, WIDTH, HEIGHT);
        Random rm = new Random();

        // 随机字符
        for (int i = 1; i <= SIZE; i++) {
            int r = rm.nextInt(chars.length);
            graphics.setColor(getRandomColor());
            graphics.setFont(new Font(null, Font.BOLD + Font.ITALIC, FONT_SIZE));
            graphics.drawString(chars[r] + "", (i - 1) * WIDTH / SIZE,
                    HEIGHT / 2);
            sb.append(chars[i]);
        }
        // 干扰线
        for (int i = 1; i < LINES; i++) {
            graphics.setColor(getRandomColor());
            graphics.drawLine(rm.nextInt(WIDTH), rm.nextInt(HEIGHT),
                    rm.nextInt(WIDTH), rm.nextInt(HEIGHT));
        }
        Map<String, BufferedImage> map = new HashMap<String, BufferedImage>();
        map.put(sb.toString(), image);
        return map;
    }

    public static Color getRandomColor() {
        Random rm = new Random();
        Color color = new Color(rm.nextInt(256), rm.nextInt(256),
                rm.nextInt(256));
        return color;
    }

    public static InputStream getInputStream(BufferedImage image)
            throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
        encoder.encode(image);
        byte[] imageBts = bos.toByteArray();
        InputStream in = new ByteArrayInputStream(imageBts);
        return in;
    }
}
  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-26 20:59
    关注

    看起来您在使用 Java 编写的程序时遇到了编译错误,其中无法找到 com.sun.image.codec.jpeg 和 com.sun.image.codec.jpeg 包。


    这两个包是属于 Java 平台的私有 API,不属于标准的 Java SE API,并且在新版本的 Java 中不再可用。您需要更换一种方法来解决您的问题。


    您可以使用 javax.imageio 包中的类来替换这些类。例如,您可以使用 ImageIO 类来读取和写入图像文件,使用 ImageWriteParam 类来设置图像编码器的参数等。


    此外,在设置了 forbidden reference(access rules) 为 warning 之后,编译器会将对这些包的引用视为警告,而不是错误。因此,您可能需要检查您的编译器设置,确保它正确地处理这些警告。

    评论

报告相同问题?

悬赏问题

  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决