【发布时间】:2011-01-25 04:37:37
【问题描述】:
以下代码获取 JPEG 图像并将其转换为字符串。然后将该字符串保存到image 变量中。然后,使用文件 IO 将字符串写入a.jpg,然后通过我将标准输出管道传输到文件写入b.jpg。
import thumb
import sys
x = thumb.Thumbnail('test.jpg')
x.generate(56, 56)
image = str(x)
with open('a.jpg', 'wb') as f:
# saving to a.jpg
f.write(image)
# saving to b.jpg
sys.stdout.write(image)
用法:
python blah.py > b.jpg
这会生成两个图像文件(a.jpg 和 b.jpg)。这些图像应该是相同的......但它们不是。
通过查看记事本中的每个图像,我可以看到,换行符不知何故被添加到 b.jpg 中。导致图像损坏。
为什么 a.jpg 与 b.jpg 不同?
【问题讨论】:
-
sys.stdout.mode 是'w',我想。参见,例如,stackoverflow.com/questions/2374427/…
-
当您通过标准输出重定向时,您的 shell 可能正在解释您的输出。你在linux上吗?使用 bash?
-
@DSM:您应该将其发布为答案。
-
unix 倾向于使用标准输出在程序之间进行通信对于二进制数据来说是一个坏主意。请不要这样做。在不重定向到文件的情况下运行您的软件会弄乱终端等。请不要这样做。请!
-
@Lennart:它实际上是在写入我的网络浏览器。这是一个 CGI 脚本。我以 stdout 为例,因为它有同样的问题,而且描述起来更简单:}