繁体   English   中英

加密的字节数组到图像

[英]encrypted byte array to image

我必须从摄像机捕获视频,对其进行加密,然后将其发送到服务器。 我已经使用OpenCV逐帧捕获。 我将帧转换为字节数组并使用AES加密,然后从AES获得字节数组作为输出。

我试图使用字节数组到图像文件从加密的内容(字节数组)创建图像,但是ImageIO.read为空。 原因可能是因为此ImageIO.read返回NULL,没有错误

如何从字节数组创建图像(最好是jpg)?

假设您的客户端类发送了加密的字节数组,则在服务器类中,解密该字节数组,然后从解密的字节数组中重建图像。

ByteArrayInputStream dis = new ByteArrayInputStream(your_EncryptedBytes_array);


//Call Your decrypt method here.

ByteArrayInputStream bis = new ByteArrayInputStream(your_DecryptedBytes_array);

Iterator<?> readers = ImageIO.getImageReadersByFormatName("jpg");



/*ImageIO is a class containing static methods for locating ImageReaders
  and ImageWriters, and performing simple encoding and decoding. 
  Method  returns an Iterator containing all currently registeredImageReaders that 
  claim to be able to decode the named format */
 ImageReader reader = (ImageReader) readers.next();
        Object source = bis; 

        ImageInputStream iis = ImageIO.createImageInputStream(source); 
        reader.setInput(iis, true);
        ImageReadParam param = reader.getDefaultReadParam();

        Image image = reader.read(0, param);
        //got an image file

        BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
        //bufferedImage is the RenderedImage to be written

        Graphics2D g2 = bufferedImage.createGraphics();
        g2.drawImage(image, null, null);

        File imageFile = new File("INERT_LOCATION");
        ImageIO.write(bufferedImage, "jpg", imageFile);

        System.out.println(imageFile.getPath());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM