<p>读入数据:</p>
<pre><code>import Image
import ast
with open('rawImage.txt','r') as f:
raw_data=f.read()
with open('log.txt','r') as f:
log_data=f.read()
log_data=ast.literal_eval(log_data)
imageWidth=log_data[0]
imageHeight=log_data[1]
log_data=log_data[6]
</code></pre>
<p>让我们看看<code>raw_data</code>(来自原始图像.txt)与的字符串相同
<code>log_data</code>(来自日志.txt). 哦,它们的长度不一样:</p>
^{pr2}$
<p>看看这两条线的开头。似乎<code>raw_data</code>已经为'\x81'写入了4个字符,而这个字符是<code>\x81</code>的。在</p>
<pre><code>print(list(raw_data[:10]))
# ['6', '}', '\\', 'x', '8', '1', '8', '}', '\\', 'x']
print(list(log_data[:10]))
# ['6', '}', '\x81', '8', '}', '\x81', '7', '\x90', '\x8a', '4']
</code></pre>
<p>这可能是因为原始图像.txt以写入模式<code>'w'</code>而不是<code>'wb'</code>打开。最好的解决办法就是写作原始图像.txt使用正确的写入模式,如<a href="https://stackoverflow.com/questions/4017609/once-i-can-save-this-string-as-image-other-time-i-can/4017629#4017629">Steven Rumbalski does here</a>。在</p>
<p>但鉴于这种困境,有一种方法可以解决它:</p>
<pre><code>raw_data_fixed=raw_data.decode('string_escape')
</code></pre>
<p>现在这是可行的:</p>
<pre><code>im = Image.fromstring("YCbCr",(imageWidth,imageHeight),raw_data_fixed)
im.show()
</code></pre>