问题描述
我目前正在从我的学校系统访问s3存储桶。
要进行连接,我使用了以下内容:
import s3fs
from skimage import exposure
from PIL import Image,ImageStat
s3 = s3fs.S3FileSystem(client_kwargs={'endpoint_url': 'XXX'},key='XXX',secret='XXX')
我可以按照上述定义从s3存储桶中检索图像,并使用进行预处理
infile = s3.open('test.jpg',"rb")
image = Image.open(infile)
img = np.asarray(image) #numpy.ndarray
img_eq = exposure.equalize_adapthist(img,clip_limit=0.03) #CLAHE
image_eq = Image.fromarray((img_eq * 255).astype(np.uint8)) #Convert back to image
要在本地保存生成的图像
image_eq.save("hello.jpg")
但是,我该如何将结果图像保存/写入s3fs文件系统中?
解决方法
Pillow 中的
save
也接受一个文件。你可以这样做:
image_eq.save(fs.open('s3://bucket/file.png','wb'),'PNG')
你必须写一个二进制文件。我认为通过强制执行文件类型效果最好,例如在本例中为 PNG。