Python: SpooledTemporaryFile 后缀无效
Python: SpooledTemporaryFile suffix not working
我想使用 opencv 将图像写入临时文件,获取该临时文件的路径并将该路径传递给函数。
import cv2 as cv
from tempfile import NamedTemporaryFile, SpooledTemporaryFile
img = create_my_awesome_image()
with NamedTemporaryFile(suffix=".png") as temp:
print(temp.name)
cv.imwrite(temp.name, img) # this one sparks joy
with SpooledTemporaryFile(max_size=1000000, suffix=".png") as temp:
print(temp.name)
cv.imwrite(temp.name, img) # this one does not
第一次打印打印 C:\Users\FLORIA~1\AppData\Local\Temp\tmpl2i6nc47.png
.
第二次打印时:None
.
使用NamedTemporaryFile
可以完美找到。但是,因为第二个打印打印 None,我不能将 SpooledTemporaryFile
与 opencv 一起使用。知道为什么 SpooledTemporaryFile
的前缀参数被忽略了吗?
问题是磁盘上不存在假脱机文件(例如 SpooledTemporaryFile
),因此它也没有名称。
但是,请注意 cv2.imread()
会将文件名作为参数,这意味着它将处理文件打开并且不支持假脱机文件。
如果您只处理 png
图像,它们不会被编码,这意味着变量 img
已经包含内存中的图像数据,您无需做任何其他事情,只需当你想将它保存到磁盘时调用 cv2.imwrite()
。如果要使用临时文件,它必须是 NamedTemporaryFile
.
如果你想在内存中处理编码图像格式,例如 jpg
,你可以使用 cv2.imencode()
来达到这个目的,如 .
我想使用 opencv 将图像写入临时文件,获取该临时文件的路径并将该路径传递给函数。
import cv2 as cv
from tempfile import NamedTemporaryFile, SpooledTemporaryFile
img = create_my_awesome_image()
with NamedTemporaryFile(suffix=".png") as temp:
print(temp.name)
cv.imwrite(temp.name, img) # this one sparks joy
with SpooledTemporaryFile(max_size=1000000, suffix=".png") as temp:
print(temp.name)
cv.imwrite(temp.name, img) # this one does not
第一次打印打印 C:\Users\FLORIA~1\AppData\Local\Temp\tmpl2i6nc47.png
.
第二次打印时:None
.
使用NamedTemporaryFile
可以完美找到。但是,因为第二个打印打印 None,我不能将 SpooledTemporaryFile
与 opencv 一起使用。知道为什么 SpooledTemporaryFile
的前缀参数被忽略了吗?
问题是磁盘上不存在假脱机文件(例如 SpooledTemporaryFile
),因此它也没有名称。
但是,请注意 cv2.imread()
会将文件名作为参数,这意味着它将处理文件打开并且不支持假脱机文件。
如果您只处理 png
图像,它们不会被编码,这意味着变量 img
已经包含内存中的图像数据,您无需做任何其他事情,只需当你想将它保存到磁盘时调用 cv2.imwrite()
。如果要使用临时文件,它必须是 NamedTemporaryFile
.
如果你想在内存中处理编码图像格式,例如 jpg
,你可以使用 cv2.imencode()
来达到这个目的,如