def render(self, data, media_type=None, renderer_context=None):
# Return data, squeezing time dimension as this only works with 3D data
if not data["time_request"]:
self.render_style = 'binary'
data["data"].data = np.squeeze(data["data"].data, axis=(0,))
else:
# This appears to contain time data. Error out
renderer_context["response"].status_code = 400
renderer_context["accepted_media_type"] = 'application/json'
self.media_type = 'application/json'
self.format = 'json'
err_msg = {"status": 400, "message": "The cutout service JPEG interface does not support 4D cutouts",
"code": 2005}
jr = JSONRenderer()
return jr.render(err_msg, 'application/json', renderer_context)
if renderer_context['view'].bit_depth != 8:
# This renderer only works on uint8 data
renderer_context["response"].status_code = 400
renderer_context["accepted_media_type"] = 'application/json'
self.media_type = 'application/json'
self.format = 'json'
err_msg = {"status": 400, "message": "The cutout service JPEG interface only supports uint8 image data",
"code": 2001}
jr = JSONRenderer()
return jr.render(err_msg, 'application/json', renderer_context)
# Reshape matrix
d_shape = data["data"].data.shape
data["data"].data = np.reshape(data["data"].data, (d_shape[0] * d_shape[1], d_shape[2]), order="C")
# Save to Image
jpeg_image = Image.fromarray(data["data"].data)
img_file = io.BytesIO()
jpeg_image.save(img_file, "JPEG", quality=85)
# Send file
img_file.seek(0)
return img_file.read()
评论列表
文章目录