Converting a byte array to an image file

有些话、适合烂在心里 提交于 2021-01-28 07:40:30

问题


I have an Arducam hooked up to an Arduino UNO over SPI. I am having the camera take a photo and send the data back over SPI to my Arduino. I have a python script that is capturing the serial output from the camera (which should be the image data) and saving it to a text file. My python code for saving the data to a text file looks something like this:

import serial
import time

ser = serial.Serial('/dev/cu.usbmodem621', 115200)

f = open('data.txt','a')

#pause to let everything get warmed up/connected
time.sleep(2)

#triggers the camera to take a picture
ser.write("1")

while True:

    f.write(ser.readline())
    f.close()
    f = open('data.txt','a')

This saves a bunch of hex(?) into data.txt that looks like this:

ffd8 ffe0 0010 4a46 4946 0001 0101 0000
0000 0000 ffdb 0043 000c 0809 0b09 080c
0b0a 0b0e 0d0c 0e12 1e14 1211 1112 251a
1c16 1e2c 262e 2d2b 262a 2930 3645 3b30
3341 3429 2a3c 523d 4147 4a4d 4e4d 2f3a
555b 544b 5a45 4c4d 4aff db00 4301 0d0e
0e12 1012 2314 1423 4a32 2a32 4a4a 4a4a
4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a
4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a
4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a ffc4
001f 0000 0105 0101 0101 0101 0000 0000
0000 0000 0102 0304 0506 0708 090a 0bff
c400 b510 0002 0103 0302 0403 0505 0404
0000 017d 0102 0300 0411 0512 2131 4106
1351 6107 2271 1432 8191 a108 2342 b1c1
1552 d1f0 2433 6272 8209 0a16 1718 191a
2526 2728 292a 3435 3637 3839 3a43 4445
4647 4849 4a53 5455 5657 5859 5a63 6465
6667 6869 6a73 7475 7677 7879 7a83 8485
8687 8889 8a92 9394 9596 9798 999a a2a3
a4a5 a6a7 a8a9 aab2 b3b4 b5b6 b7b8 b9ba
c2c3 c4c5 c6c7 c8c9 cad2 d3d4 d5d6 d7d8
d9da e1e2 e3e4 e5e6 e7e8 e9ea f1f2 f3f4
f5f6 f7f8 f9fa ffc4 001f 0100 0301 0101
0101 0101 0101 0000 0000 0000 0102 0304
0506 0708 090a 0bff c400 b511 0002 0102
0404 0304 0705 0404 0001 0277 0001 0203
1104 0521 3106 1241 5107 6171 1322 3281
0814 4291 a1b1 c109 2333 52f0 1562 72d1
0a16 2434 e125 f117 1819 1a26 2728 292a
3536 3738 393a 4344 4546 4748 494a 5354
5556 5758 595a 6364 6566 6768 696a 7374
7576 7778 797a 8283 8485 8687 8889 8a92
9394 9596 9798 999a a2a3 a4a5 a6a7 a8a9
aab2 b3b4 b5b6 b7b8 b9ba c2c3 c4c5 c6c7
c8c9 cad2 d3d4 d5d6 d7d8 d9da e2e3 e4e5
e6e7 e8e9 eaf2 f3f4 f5f6 f7f8 f9fa ffc0
0011 0800 f001 4003 0121 0002 1101 0311
01ff da00 0c03 0100 0211 0311 003f 00f3
ba4a 004a 2801 453a 900f 14f1 4807 8a70
a007 8356 2293 1520 6841 3569 4135 4319
a10c d572 392b 2196 15aa 5069 0c5a 4a40
308a 85d6 9815 dd2a ac91 d311 4e58 aa9c
b1d6 8845 474a aecb 5622 3229 b400 9494
c06d 2530 1b49 400b 4f5a 4327 4356 a334
80e7 69b5 a884 a280 0a78 a007 0a78 a901
c29e 2801 d4f1 4809 e293 157e 09aa 40d2
827a bf0c d593 28bb 1c95 615a a009 01a5
a430 a611 4011 32d4 0e94 c455 923a a92c
5562 294b 1554 923a b115 d96a 222a 8069
a6d3 0129 0d00 369b 4c02 9c28 192a 1ab1
19a9 030f 1498 ad44 2628 c500 18a7 0a00
78a7 0a90 1f4e 1400 e14e a403 c54d 1be2
9017 e096 b460 96a1 8cbf 0cb5 7237 ac86
5856 a901 a431 d452 10c2 2a26 5a60 40e9
55a4 8e98 1565 8aa9 cb0d 5a11 5248 aab3
c756 2226 5a8f 14c0 4c53 714c 04c5 3714
c04c 528a 0078 a9d2 90cc 5cd1 9ad0 4266
9334 00b9 a5cd 0038 1a78 3480 7034 fcd2
01d9 a766 900e cd39 5a80 278e 4c55 d867
a903 4609 eaf4 3356 4c65 c492 ac2b d40c
901a 7669 0053 4d00 46c2 a075 a605 774a
ab24 7540 5492 3aa9 2475 a08a ee95 5d85
5088 cd34 d301 b494 c04c d19a 0050 6a55
6a40 63d1 5a00 9450 014b 400e a752 01e2
9c29 00fa 70a4 03a9 d400 e06a 78df 1480
b90c d5a1 04d5 0c65 f865 ab71 c959 0cb0
ad52 8348 62d1 4843 4d46 4530 2265 a81d
2981 5a48 eaac 9155 08a9 2455 55e3 ab02
bba5 4245 5086 1a6d 5009 4500 2d38 5006
5525 5805 1400 528a 0070 a70a 4038 53c5
201e 29f4 805a 7500 3a9c 0d20 2647 ab90
cb52 05f8 66ab f14b 59b1 96e3 92a7 57a8
1928 34ec d218 534d 0030 8a89 9698 885d
2abb c754 0569 22aa 7245 5622 abc7 559d
2a84 40cb 4c35 4036 9298 0538 5006 5536
ac02 9680 0a5a 0050 69d4 00f1 4e15 2048
29f4 8070 a5a0 0753 a900 e153 46d8 a405
b8a5 abd0 cb52 c65e 8a6a b692 5663 2c2b
d480 d48c 7514 804a 6914 c08d 8542 cb4c
4577 4aaf 2475 4054 923a a924 7562 2ac8
955d 8550 8653 6a80 4a5a 00ca a4ab 0128
a005 a5a0 05a7 0a00 7538 5202 414f 1480
7d3a 900b 4ea4 03a9 c0d0 04a8 f56e 292a
40bb 14b5 7a29 6b36 32da 3d4e ad50 3250
69d9 a431 6928 01a4 5464 5302 275a 81d2
988a d247 5524 8ead 014e 48ea a3a5 5888
1853 0d50 86d2 5303 2a92 ac04 a4a0 05a5
a005 a70a 0070 a78a 403c 53c5 201e 29e2
900e a752 0169 6801 c2a5 47a4 05a8 a5ab
b14b 52c6 5e8a 5ab5 1bd6 632c 2354 a0d4
8c75 2d00 2534 d003 1854 4cb4 c081 d2ab
4b1d 508a 72c7 54e4 8eac 4547 4a85 8558
88c8 a4a6 0645 21ab 0129 2800 a5a0 05a7
0a00 753c 5003 e9c2 a409 01a9 0520 1d4e
a402 d2d0 02d3 81a4 04a8 d56a 3929 0176
196a ec52 5431 96e3 7ab0 ad59 8c90 1a7d
0316 9280 1a6a 3228 0226 5a81 d298 8ad2
2553 963a d101 4a54 aaae b562 2161 4c34
c463 d256 8036 8a00 4a28 01d4 b400 ecd3
c1a0 078a 78a4 03c1 a783 4809 053a 900e
a5a4 02d2 d201 c0d4 88d4 016a 292a ec52
54b1 9762 96ad 23d6 632c 2b54 a0d4 8c75
2d00 21a6 9a00 6115 130a 6057 74aa b225
508a 72a5 5391 2b41 159d 6a16 1542 314d
34d6 8036 9280 0a28 00a7 0a00 5a78 a007
834f 1480 70a9 0520 2406 9e29 00ea 7520
1696 9005 3c50 0488 d56a 37a4 05c8 a4ab
b149 59b1 96a3 7ab0 ad52 3250 6969 0c28
a006 9a63 0a60 44eb 55e4 4a60 5491 2a9c
b1d5 88a7 2255 675a b118 2699 5a88 4a4a
004a 2800 a5cd 002e 69d9 a007 834f 0680
2414 e06a 4090 1a90 1a40 3c53 a900 b4b4
00b4 b480 70a9 51a8 02d4 7255 c8a4 a819
7619 2ad2 3d40 c9d5 aa4c d48c 5cd1 4005
21a0 08c8 a899 6981 5a44 aa92 a55a 114e
54aa 7225 588e 68d3 0d6c 2129 2801 28a0
04a2 8014 53a8 01f4 f068 01e2 9e29 00f1
5203 4807 8a78 a901 f4b4 00b4 5201 69c0
d004 a8d5 6a39 2901 7229 2aec 5254 328b
28f5 3ab5 40c7 e69d 4805 a4a0 04a8 c8a6
044e b55a 54aa 029c a954 a54a b423 9234
c35b 9236 9b40 0945 0014 9400 b4b9 a007
669e 0d00 3c1a 901a 0078 34f0 6a40 7835
20a4 03c1 a752 0169 6900 b4b4 00e0 6a54
6a00 b314 9576 292a 58cb 91c9 5611 eb31
93a9 a905 218e a5a0 04a6 9a00 8d85 42eb
4c0a b225 5395 2ad0 8e29 8546 6ba0 9194
9400 da28 0128 a002 8a00 7538 5003 c1a7
8340 1203 4f06 900f 06a4 06a4 0905 3c52
0169 d400 b452 0169 c280 2646 ab31 4948
0b91 c956 e27a 828b 48d5 32b5 48c9 01a5
a402 d140 0c35 1b0a 00ae eb55 658e a80e
15d6 a161 5d44 0c34 ca00 6d14 0094 5001
4500 14e1 400e 069e 2802 4069 e0d2 0241
4f06 9012 0352 0348 070a 7520 168a 005a
5a40 3c1a 951a 802d 44f5 7239 2a46 5b8a
4ab2 8d50 3265 34f0 6a46 3a8a 004a 69a0
0898 5412 a530 3827 5aae e2ba c821 2298
6801 b494 0094 5002 5140 052d 0038 1a70
3400 f06a 4068 0240 69e0 d481 2034 f069
0120 34f0 6900 b4b4 00b4 5201 d4e0 6802
646a b51b d219 6e39 2ae4 6f50 3275 6a99
4d48 c7e6 9d48 0292 8018 d513 ad30 3837
5aae e95d 4410 3ad4 2453 01a6 9b40 0949
4005 2500 1450 02d3 8500 3854 8280 1e0d
4829 0120 34f0 6901 2034 f069 00f1 4b48
05a5 a005 a5a4 03c1 a991 a802 cc72 55b8
e4a9 196e 37ab 28d5 0325 069f 4862 d2d2
01a6 a361 4c0e 11aa 1615 d441 03ad 5765
a604 6699 4009 4da0 0292 800a 2801 68a0
0766 9e0d 003c 1a90 1a00 901a 7835 2048
0d3c 1a40 3c53 c520 1d4b 400b 4520 169e
0d00 4c8d 56a3 7a43 2dc7 255b 8dea 0658
46a9 41a9 18f1 4b40 0530 d007 066a 3615
d441 130a 81d6 8020 6151 9a60 30d2 5002
5250 0145 0014 b400 5385 003c 1a78 3401
2035 2034 8078 3520 3480 7835 20a4 03f3
4ea4 014b 4005 3850 03c1 a991 e901 6639
2ae4 7254 8cb5 1c95 3abd 4144 a0d3 e900
b494 0ce0 cd30 d751 991b 542c 2802 1615
0b0a 6046 4536 8012 9280 128a 0028 a002
9680 1c0d 3c1a 0078 3520 3401 229a 7835
2048 0d48 0d20 1e0d 381a 403a 9680 0a28
01c2 a406 8026 47ab 31c9 5232 dc72 55a8
dea4 64ea d528 6a91 8ecd 1480 e20d 308a
e920 8c8a 888a 6044 c2a1 75a6 042c 2998
a006 d250 0252 5001 4500 14b4 00b4 a280
1e29 e280 245a 901a 4048 2a41 4807 8a7d
201e 29d4 8028 a005 a70a 007a 9a9d 1a90
1663 7ab5 1b54 8cb5 1bd4 e8d5 2512 8a5a
9038 9a69 ae92 061a 8cd3 0236 150b 5004
2c2a 2229 80ca 4a00 4a4a 0029 2800 a5a0
0296 801d 4e06 8024 06a4 0680 2406 a406
a407 834f 0690 120a 78a0 05a5 a401 4500
3854 8a69 013a 355a 8de9 0cb5 1b55 98da
a464 ea6a 4152 3389 cd25 7410 21a8 cd30
2335 0b50 044c 2a36 14c0 8c8a 6628 0129
2801 28a0 028a 0028 a007 528a 0078 a901
a009 01a9 01a4 0482 9e29 00f0 6a41 4807
8a5a 402d 1400 53c5 0048 a6a7 46a4 0598
dead 46f5 2516 91aa 6535 0338 7069 dbab
a481 0b0a 8d9a 8023 a61a 008c d464 5302
334d c500 3714 98a0 04a4 a002 9280 0a5a
0029 6801 d4f0 6801 ea6a 4534 0120 3528
3520 3c54 80d2 01e2 9f40 0b4b 4802 9680
1c2a 4534 013c 6d56 a37a 9196 a37a b48d
c540 cf3f f31d 8d4a a1cf 5ae9 2490 27bd
215f 4a40 4669 b400 c34d 34c0 8cd3 0d00
2536 8012 9280 128a 0028 a002 8a00 514e
1400 e152 0340 1203 5203 4809 01a9 1690
1203 4f14 807d 2d20 168a 005a 70a0 0954
d588 da90 cb48 f56e 37a8 19c7 631d 28ad
8917 3450 030d 348a 6030 8a61 a006 1a6e
2980 c34d a006 d250 0252 5001 4500 14b4
0052 d003 8538 1a00 901a 901a 0091 4d4a
0d48 0f06 9e0d 0048 0d3e 900b 4b48 04a5
a009 14d4 a8d4 80b0 8f56 e37a 4339 2f3d
4d3b 7a9e f5a8 85a2 8012 9a68 01b4 da00
61a6 e298 0c22 9b8a 006d 2628 01b4 9400
5140 0514 0051 400b 4e14 00f1 4f06 8024
06a5 0690 1203 4fa4 0480 d482 900e a5a0
0296 900a 

In python, I am then trying to convert this text to a byte array so that I can then use PIL to convert the bytes to an image:

from PIL import Image
import StringIO

def HexToByte( hexStr ):
    """
    Convert a string hex byte values into a byte string. The Hex Byte values may
    or may not be space separated.
    """
    # The list comprehension implementation is fractionally slower in this case    
    #
    #    hexStr = ''.join( hexStr.split(" ") )
    #    return ''.join( ["%c" % chr( int ( hexStr[i:i+2],16 ) ) \
    #                                   for i in range(0, len( hexStr ), 2) ] )

    bytes = []

    hexStr = ''.join( hexStr.split(" ") )

    for i in range(0, len(hexStr), 2):
        bytes.append( chr( int (hexStr[i:i+2], 16 ) ) )

    return ''.join( bytes )

hexData = """ffd8 ffe0 0010...0296 900a"""

bs = HexToByte(hexData)
#print(bs)

file_like = StringIO.StringIO(bs)

im2 = Image.open(file_like)

outfile = "output.jpg"
if infile != outfile:
    try:
        im.save(outfile)

When I run this code, I receive an error "IOError: cannot identify image file ". I am having trouble pinpointing whether the error is in my capturing of the serial data, converting hex to bytes, or converting bytes to an image (I'm hoping it's this last step but I'm not entirely sure).

Does anyone have any suggestions on how I can turn this data into a JPEG? Thank you.


回答1:


I see two problems with your example code: first, the hex strings are not properly converted, and second, the image seems truncated. With the following code I am able to succesfully convert the textual data and write it into a readable JPG file (called 'wagner.jpg'). I can open this file in GIMP, however I get a warning 'Premature end of JPEG file', which suggests that either your example data wasn't pasted correctly, or maybe the download process dropped some bytes. Anyway, here is the code:

import binascii
import StringIO

data = """
    ffd8 ffe0 0010 4a46 4946 0001 0101 0000
    0000 0000 ffdb 0043 000c 0809 0b09 080c
    0b0a 0b0e 0d0c 0e12 1e14 1211 1112 251a
    1c16 1e2c 262e 2d2b 262a 2930 3645 3b30
    3341 3429 2a3c 523d 4147 4a4d 4e4d 2f3a
    555b 544b 5a45 4c4d 4aff db00 4301 0d0e
    0e12 1012 2314 1423 4a32 2a32 4a4a 4a4a
    4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a
    4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a
    4a4a 4a4a 4a4a 4a4a 4a4a 4a4a 4a4a ffc4
    001f 0000 0105 0101 0101 0101 0000 0000
    0000 0000 0102 0304 0506 0708 090a 0bff
    c400 b510 0002 0103 0302 0403 0505 0404
    0000 017d 0102 0300 0411 0512 2131 4106
    1351 6107 2271 1432 8191 a108 2342 b1c1
    1552 d1f0 2433 6272 8209 0a16 1718 191a
    2526 2728 292a 3435 3637 3839 3a43 4445
    4647 4849 4a53 5455 5657 5859 5a63 6465
    6667 6869 6a73 7475 7677 7879 7a83 8485
    8687 8889 8a92 9394 9596 9798 999a a2a3
    a4a5 a6a7 a8a9 aab2 b3b4 b5b6 b7b8 b9ba
    c2c3 c4c5 c6c7 c8c9 cad2 d3d4 d5d6 d7d8
    d9da e1e2 e3e4 e5e6 e7e8 e9ea f1f2 f3f4
    f5f6 f7f8 f9fa ffc4 001f 0100 0301 0101
    0101 0101 0101 0000 0000 0000 0102 0304
    0506 0708 090a 0bff c400 b511 0002 0102
    0404 0304 0705 0404 0001 0277 0001 0203
    1104 0521 3106 1241 5107 6171 1322 3281
    0814 4291 a1b1 c109 2333 52f0 1562 72d1
    0a16 2434 e125 f117 1819 1a26 2728 292a
    3536 3738 393a 4344 4546 4748 494a 5354
    5556 5758 595a 6364 6566 6768 696a 7374
    7576 7778 797a 8283 8485 8687 8889 8a92
    9394 9596 9798 999a a2a3 a4a5 a6a7 a8a9
    aab2 b3b4 b5b6 b7b8 b9ba c2c3 c4c5 c6c7
    c8c9 cad2 d3d4 d5d6 d7d8 d9da e2e3 e4e5
    e6e7 e8e9 eaf2 f3f4 f5f6 f7f8 f9fa ffc0
    0011 0800 f001 4003 0121 0002 1101 0311
    01ff da00 0c03 0100 0211 0311 003f 00f3
    ba4a 004a 2801 453a 900f 14f1 4807 8a70
    a007 8356 2293 1520 6841 3569 4135 4319
    a10c d572 392b 2196 15aa 5069 0c5a 4a40
    308a 85d6 9815 dd2a ac91 d311 4e58 aa9c
    b1d6 8845 474a aecb 5622 3229 b400 9494
    c06d 2530 1b49 400b 4f5a 4327 4356 a334
    80e7 69b5 a884 a280 0a78 a007 0a78 a901
    c29e 2801 d4f1 4809 e293 157e 09aa 40d2
    827a bf0c d593 28bb 1c95 615a a009 01a5
    a430 a611 4011 32d4 0e94 c455 923a a92c
    5562 294b 1554 923a b115 d96a 222a 8069
    a6d3 0129 0d00 369b 4c02 9c28 192a 1ab1
    19a9 030f 1498 ad44 2628 c500 18a7 0a00
    78a7 0a90 1f4e 1400 e14e a403 c54d 1be2
    9017 e096 b460 96a1 8cbf 0cb5 7237 ac86
    5856 a901 a431 d452 10c2 2a26 5a60 40e9
    55a4 8e98 1565 8aa9 cb0d 5a11 5248 aab3
    c756 2226 5a8f 14c0 4c53 714c 04c5 3714
    c04c 528a 0078 a9d2 90cc 5cd1 9ad0 4266
    9334 00b9 a5cd 0038 1a78 3480 7034 fcd2
    01d9 a766 900e cd39 5a80 278e 4c55 d867
    a903 4609 eaf4 3356 4c65 c492 ac2b d40c
    901a 7669 0053 4d00 46c2 a075 a605 774a
    ab24 7540 5492 3aa9 2475 a08a ee95 5d85
    5088 cd34 d301 b494 c04c d19a 0050 6a55
    6a40 63d1 5a00 9450 014b 400e a752 01e2
    9c29 00fa 70a4 03a9 d400 e06a 78df 1480
    b90c d5a1 04d5 0c65 f865 ab71 c959 0cb0
    ad52 8348 62d1 4843 4d46 4530 2265 a81d
    2981 5a48 eaac 9155 08a9 2455 55e3 ab02
    bba5 4245 5086 1a6d 5009 4500 2d38 5006
    5525 5805 1400 528a 0070 a70a 4038 53c5
    201e 29f4 805a 7500 3a9c 0d20 2647 ab90
    cb52 05f8 66ab f14b 59b1 96e3 92a7 57a8
    1928 34ec d218 534d 0030 8a89 9698 885d
    2abb c754 0569 22aa 7245 5622 abc7 559d
    2a84 40cb 4c35 4036 9298 0538 5006 5536
    ac02 9680 0a5a 0050 69d4 00f1 4e15 2048
    29f4 8070 a5a0 0753 a900 e153 46d8 a405
    b8a5 abd0 cb52 c65e 8a6a b692 5663 2c2b
    d480 d48c 7514 804a 6914 c08d 8542 cb4c
    4577 4aaf 2475 4054 923a a924 7562 2ac8
    955d 8550 8653 6a80 4a5a 00ca a4ab 0128
    a005 a5a0 05a7 0a00 7538 5202 414f 1480
    7d3a 900b 4ea4 03a9 c0d0 04a8 f56e 292a
    40bb 14b5 7a29 6b36 32da 3d4e ad50 3250
    69d9 a431 6928 01a4 5464 5302 275a 81d2
    988a d247 5524 8ead 014e 48ea a3a5 5888
    1853 0d50 86d2 5303 2a92 ac04 a4a0 05a5
    a005 a70a 0070 a78a 403c 53c5 201e 29e2
    900e a752 0169 6801 c2a5 47a4 05a8 a5ab
    b14b 52c6 5e8a 5ab5 1bd6 632c 2354 a0d4
    8c75 2d00 2534 d003 1854 4cb4 c081 d2ab
    4b1d 508a 72c7 54e4 8eac 4547 4a85 8558
    88c8 a4a6 0645 21ab 0129 2800 a5a0 05a7
    0a00 753c 5003 e9c2 a409 01a9 0520 1d4e
    a402 d2d0 02d3 81a4 04a8 d56a 3929 0176
    196a ec52 5431 96e3 7ab0 ad59 8c90 1a7d
    0316 9280 1a6a 3228 0226 5a81 d298 8ad2
    2553 963a d101 4a54 aaae b562 2161 4c34
    c463 d256 8036 8a00 4a28 01d4 b400 ecd3
    c1a0 078a 78a4 03c1 a783 4809 053a 900e
    a5a4 02d2 d201 c0d4 88d4 016a 292a ec52
    54b1 9762 96ad 23d6 632c 2b54 a0d4 8c75
    2d00 21a6 9a00 6115 130a 6057 74aa b225
    508a 72a5 5391 2b41 159d 6a16 1542 314d
    34d6 8036 9280 0a28 00a7 0a00 5a78 a007
    834f 1480 70a9 0520 2406 9e29 00ea 7520
    1696 9005 3c50 0488 d56a 37a4 05c8 a4ab
    b149 59b1 96a3 7ab0 ad52 3250 6969 0c28
    a006 9a63 0a60 44eb 55e4 4a60 5491 2a9c
    b1d5 88a7 2255 675a b118 2699 5a88 4a4a
    004a 2800 a5cd 002e 69d9 a007 834f 0680
    2414 e06a 4090 1a90 1a40 3c53 a900 b4b4
    00b4 b480 70a9 51a8 02d4 7255 c8a4 a819
    7619 2ad2 3d40 c9d5 aa4c d48c 5cd1 4005
    21a0 08c8 a899 6981 5a44 aa92 a55a 114e
    54aa 7225 588e 68d3 0d6c 2129 2801 28a0
    04a2 8014 53a8 01f4 f068 01e2 9e29 00f1
    5203 4807 8a78 a901 f4b4 00b4 5201 69c0
    d004 a8d5 6a39 2901 7229 2aec 5254 328b
    28f5 3ab5 40c7 e69d 4805 a4a0 04a8 c8a6
    044e b55a 54aa 029c a954 a54a b423 9234
    c35b 9236 9b40 0945 0014 9400 b4b9 a007
    669e 0d00 3c1a 901a 0078 34f0 6a40 7835
    20a4 03c1 a752 0169 6900 b4b4 00e0 6a54
    6a00 b314 9576 292a 58cb 91c9 5611 eb31
    93a9 a905 218e a5a0 04a6 9a00 8d85 42eb
    4c0a b225 5395 2ad0 8e29 8546 6ba0 9194
    9400 da28 0128 a002 8a00 7538 5003 c1a7
    8340 1203 4f06 900f 06a4 06a4 0905 3c52
    0169 d400 b452 0169 c280 2646 ab31 4948
    0b91 c956 e27a 828b 48d5 32b5 48c9 01a5
    a402 d140 0c35 1b0a 00ae eb55 658e a80e
    15d6 a161 5d44 0c34 ca00 6d14 0094 5001
    4500 14e1 400e 069e 2802 4069 e0d2 0241
    4f06 9012 0352 0348 070a 7520 168a 005a
    5a40 3c1a 951a 802d 44f5 7239 2a46 5b8a
    4ab2 8d50 3265 34f0 6a46 3a8a 004a 69a0
    0898 5412 a530 3827 5aae e2ba c821 2298
    6801 b494 0094 5002 5140 052d 0038 1a70
    3400 f06a 4068 0240 69e0 d481 2034 f069
    0120 34f0 6900 b4b4 00b4 5201 d4e0 6802
    646a b51b d219 6e39 2ae4 6f50 3275 6a99
    4d48 c7e6 9d48 0292 8018 d513 ad30 3837
    5aae e95d 4410 3ad4 2453 01a6 9b40 0949
    4005 2500 1450 02d3 8500 3854 8280 1e0d
    4829 0120 34f0 6901 2034 f069 00f1 4b48
    05a5 a005 a5a4 03c1 a991 a802 cc72 55b8
    e4a9 196e 37ab 28d5 0325 069f 4862 d2d2
    01a6 a361 4c0e 11aa 1615 d441 03ad 5765
    a604 6699 4009 4da0 0292 800a 2801 68a0
    0766 9e0d 003c 1a90 1a00 901a 7835 2048
    0d3c 1a40 3c53 c520 1d4b 400b 4520 169e
    0d00 4c8d 56a3 7a43 2dc7 255b 8dea 0658
    46a9 41a9 18f1 4b40 0530 d007 066a 3615
    d441 130a 81d6 8020 6151 9a60 30d2 5002
    5250 0145 0014 b400 5385 003c 1a78 3401
    2035 2034 8078 3520 3480 7835 20a4 03f3
    4ea4 014b 4005 3850 03c1 a991 e901 6639
    2ae4 7254 8cb5 1c95 3abd 4144 a0d3 e900
    b494 0ce0 cd30 d751 991b 542c 2802 1615
    0b0a 6046 4536 8012 9280 128a 0028 a002
    9680 1c0d 3c1a 0078 3520 3401 229a 7835
    2048 0d48 0d20 1e0d 381a 403a 9680 0a28
    01c2 a406 8026 47ab 31c9 5232 dc72 55a8
    dea4 64ea d528 6a91 8ecd 1480 e20d 308a
    e920 8c8a 888a 6044 c2a1 75a6 042c 2998
    a006 d250 0252 5001 4500 14b4 00b4 a280
    1e29 e280 245a 901a 4048 2a41 4807 8a7d
    201e 29d4 8028 a005 a70a 007a 9a9d 1a90
    1663 7ab5 1b54 8cb5 1bd4 e8d5 2512 8a5a
    9038 9a69 ae92 061a 8cd3 0236 150b 5004
    2c2a 2229 80ca 4a00 4a4a 0029 2800 a5a0
    0296 801d 4e06 8024 06a4 0680 2406 a406
    a407 834f 0690 120a 78a0 05a5 a401 4500
    3854 8a69 013a 355a 8de9 0cb5 1b55 98da
    a464 ea6a 4152 3389 cd25 7410 21a8 cd30
    2335 0b50 044c 2a36 14c0 8c8a 6628 0129
    2801 28a0 028a 0028 a007 528a 0078 a901
    a009 01a9 01a4 0482 9e29 00f0 6a41 4807
    8a5a 402d 1400 53c5 0048 a6a7 46a4 0598
    dead 46f5 2516 91aa 6535 0338 7069 dbab
    a481 0b0a 8d9a 8023 a61a 008c d464 5302
    334d c500 3714 98a0 04a4 a002 9280 0a5a
    0029 6801 d4f0 6801 ea6a 4534 0120 3528
    3520 3c54 80d2 01e2 9f40 0b4b 4802 9680
    1c2a 4534 013c 6d56 a37a 9196 a37a b48d
    c540 cf3f f31d 8d4a a1cf 5ae9 2490 27bd
    215f 4a40 4669 b400 c34d 34c0 8cd3 0d00
    2536 8012 9280 128a 0028 a002 8a00 514e
    1400 e152 0340 1203 5203 4809 01a9 1690
    1203 4f14 807d 2d20 168a 005a 70a0 0954
    d588 da90 cb48 f56e 37a8 19c7 631d 28ad
    8917 3450 030d 348a 6030 8a61 a006 1a6e
    2980 c34d a006 d250 0252 5001 4500 14b4
    0052 d003 8538 1a00 901a 901a 0091 4d4a
    0d48 0f06 9e0d 0048 0d3e 900b 4b48 04a5
    a009 14d4 a8d4 80b0 8f56 e37a 4339 2f3d
    4d3b 7a9e f5a8 85a2 8012 9a68 01b4 da00
    61a6 e298 0c22 9b8a 006d 2628 01b4 9400
    5140 0514 0051 400b 4e14 00f1 4f06 8024
    06a5 0690 1203 4fa4 0480 d482 900e a5a0
    0296 900a
    """

buf = StringIO.StringIO()    
for line in data.splitlines():    
    line = line.strip().replace(" ", "")
    if not line:
        continue
    bytes = binascii.unhexlify(line)
    buf.write(bytes)

with open("wagner.jpg", "wb") as f:
    f.write(buf.getvalue())


来源:https://stackoverflow.com/questions/33987848/converting-a-byte-array-to-an-image-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!