Java 将JPEG转换为二进制(1和0)格式

Java 将JPEG转换为二进制(1和0)格式,java,python,image-processing,jpeg,huffman-code,Java,Python,Image Processing,Jpeg,Huffman Code,我想把一个JPEG文件转换成它的二进制等价物,然后再转换回它的JPEG格式。 i、 e将JPEG文件转换为1和0,并将其输出为文本文件,然后获取此文本文件并将其转换回原始图像(仅检查转换过程中是否存在错误) 我曾尝试用python中的binascii模块来实现这一点,但似乎存在一个我无法理解的编码问题 如果有人能帮我解决这个问题,那就太好了 附言:Java解决方案将更受欢迎好吧,你会感到抱歉;-),但这里有一个Python解决方案: def dont_ask(inpath, outpath):

我想把一个JPEG文件转换成它的二进制等价物,然后再转换回它的JPEG格式。 i、 e将JPEG文件转换为1和0,并将其输出为文本文件,然后获取此文本文件并将其转换回原始图像(仅检查转换过程中是否存在错误)

我曾尝试用python中的binascii模块来实现这一点,但似乎存在一个我无法理解的编码问题

如果有人能帮我解决这个问题,那就太好了

附言:Java解决方案将更受欢迎

好吧,你会感到抱歉;-),但这里有一个Python解决方案:

def dont_ask(inpath, outpath):
    byte2str = ["{:08b}".format(i) for i in range(256)]
    with open(inpath, "rb") as fin:
        with open(outpath, "w") as fout:
            data = fin.read(1024)  # doesn't much matter
            while data:
                for b in map(ord, data):
                    fout.write(byte2str[b])
                data = fin.read(1024)

dont_ask("path_to_some_jpg", "path_to_some_ouput_file")
当然,这会将任何文件转换为由“1”和“0”字符组成的8倍大的文件


顺便说一句,我不是在写另一半——但不是因为它很难;-)

将任何文件(不仅仅是JPG)转换为二进制文件的Java解决方案:

    File input= new File("path to input");
    File output = new File("path to output");

    try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(input));
         BufferedWriter bw = new BufferedWriter(new FileWriter(output))) {
        int read;
        while ((read=bis.read()) != -1) {
              String text = Integer.toString(read,2);
              while (text.length() < 8) {
                    text="0"+text;
              }
              bw.write(text);
        }            
    } catch (IOException e) {
            System.err.println(e);
    }
文件输入=新文件(“输入路径”);
文件输出=新文件(“输出路径”);
try(BufferedInputStream bis=new BufferedInputStream(new FileInputStream(input));
BufferedWriter bw=新的BufferedWriter(新文件写入程序(输出))){
int-read;
而((read=bis.read())!=-1){
字符串text=Integer.toString(读取,2);
while(text.length()<8){
text=“0”+文本;
}
写(文本);
}            
}捕获(IOE异常){
系统错误println(e);
}

您是说希望文本文件实际包含“0”和“1”字符吗?或者你是说别的什么?那么你想要Java还是Python?为什么是哈夫曼编码标签?你到底想要这个做什么?从技术上讲,JPEG文件已经是二进制文件。@DavidWallace是的,文本文件应该包含实际的0和1个字符,以表示文件的二进制代码JPEG@ChristianTernus是的,我明白。我只想让那个二进制文件用“1”和“0”两个字符来表示谢谢你的帮助!