Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android,java,简单位图编码_Java_Bytearray - Fatal编程技术网

android,java,简单位图编码

android,java,简单位图编码,java,bytearray,Java,Bytearray,我需要下载位图,编码它并保存到sd卡。 我对第一步和第三步没有问题,但对第二步没有问题。 我不需要复杂的编码算法,所以我只需要反转下载过程中接收到的字节数组: private static byte[] vice_versa(byte[] bytes) { if (bytes == null) { assert false; return null; } byte[] result = new byte[bytes.length];

我需要下载位图,编码它并保存到sd卡。 我对第一步和第三步没有问题,但对第二步没有问题。 我不需要复杂的编码算法,所以我只需要反转下载过程中接收到的字节数组:

private static byte[] vice_versa(byte[] bytes) {
    if (bytes == null) {
        assert false;
        return null;
    }
    byte[] result = new byte[bytes.length];
    for (int i = 0; i < bytes.length; i++) {
        result[bytes.length - 1 - i] = bytes[i];
    }
    return result;
}
我按如下方式加载保存的文件:

            ...
            byte[] bytes = FileUtils.readFileToByteArray(getFile());
            bytes = vice_versa(bytes);              
            Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, 0);
            ...

但是,BitmapFactory无法解码字节数组并返回null。我能够比较解码字节流和原始字节流。流长度相同,所有字节都相同,但Object.equals返回false。这是怎么可能的?发生了什么事?

你的问题不是很清楚(你说的是哪个
等于()
?),但似乎你把它搞糊涂了
array1.equals(array2)
Arrays.equals(array1,array2)
,请参见

什么对象.equals()返回false?你比较的对象是什么?你能发布BitmapFactory.decodeByteArray()方法吗?旁注:
反之亦然
是一个奇怪的方法名称-那么
reverseByteArray
呢?你试过没有步骤2的步骤1和步骤3吗?也就是说,你确定你原来拥有的东西可以被
位图工厂
解码吗?我真的把array1.equals()和Arrays.equals()搞混了。实际上,Arrays.equals()返回true,我所做的错误是将第三个参数作为0传递给bmp工厂:BitmapFactory.decodeByteArray(字节,0,0);相反,应该是:BitmapFactory.decodeByteArray(字节,0,字节.长度);
            ...
            byte[] bytes = FileUtils.readFileToByteArray(getFile());
            bytes = vice_versa(bytes);              
            Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, 0);
            ...