[ome-devel] Request for functionality on OMERO WebGateway in version 5.1.4
José Salavert Torres
josator at ebi.ac.uk
Thu Aug 27 15:32:58 BST 2015
Sorry, it was a reminder. I should have updated to 5.1.3 and checked this.
Thanks for implementing this.
PD: We will add the omero logo to the PDBe page of the volume slicer on release.
> On 27 Aug 2015, at 15:27, Aleksandra Tarkowska (Staff) <A.Tarkowska at dundee.ac.uk> wrote:
>
> Hi José,
>
> Thanks for your email.
>
> I am not sure if I follow it correctly but as far as I can see webgateway.views.render_image_region already support quality.
>
> https://server/webgateway/render_image_region/IMAGE_ID/PLANE_ID/0/?q=0.5®ion=x,y,w,h
>
> see: https://github.com/openmicroscopy/openmicroscopy/blob/dev_5_1/components/tools/OmeroWeb/omeroweb/webgateway/views.py#L742 <https://github.com/openmicroscopy/openmicroscopy/blob/dev_5_1/components/tools/OmeroWeb/omeroweb/webgateway/views.py#L742>
> and https://github.com/openmicroscopy/openmicroscopy/blob/dev_5_1/components/tools/OmeroWeb/omeroweb/webgateway/views.py#L775 <https://github.com/openmicroscopy/openmicroscopy/blob/dev_5_1/components/tools/OmeroWeb/omeroweb/webgateway/views.py#L775>
>
> Although it is true that quality is not taken to the account in webgateway_cache.
>
> Thanks for letting us know. I have created ticket to fix webgateway_cache in https://trac.openmicroscopy.org/ome/ticket/13011
>
>
> Kind regards
> Ola
>
> From: José Salavert Torres <josator at ebi.ac.uk <mailto:josator at ebi.ac.uk>>
> Reply-To: OME External Developer List <ome-devel at lists.openmicroscopy.org.uk <mailto:ome-devel at lists.openmicroscopy.org.uk>>
> Date: Thu, 27 Aug 2015 14:46:53 +0100
> To: OME External Developer List <ome-devel at lists.openmicroscopy.org.uk <mailto:ome-devel at lists.openmicroscopy.org.uk>>
> Subject: [ome-devel] Request for functionality on OMERO WebGateway in version 5.1.4
>
> Dear all,
>
> We requested in a meeting some time ago in a meeting a new functionality in the render_image_region on the web gateway of omero web.
>
> Concretely we want to have the possibility to select the quality of the jpeg sent by the server. This is the code we currently added to achieve that:
>
> On web gateway openmicroscopy/components/tools/OmeroWeb/omeroweb/webgateway/urls.py file:
>
> render_image_region_quality = ( r'^render_image_region_quality/(?P<iid>[^/]+)/(?P<z>[^/]+)/(?P<t>[^/]+)/(?P<q>[^/]+)/$',
> 'webgateway.views.render_image_region_quality')
> """
> Returns a jpeg of the OMERO image, rendering only a region specified in query string as
> region=x,y,width,height. E.g. region=0,512,256,256. If the image is much bigger than the
> indicated baseline size, it is resized with Pillow. See L{views.render_image_region_quality}.
> Rendering settings can be specified in the request parameters.
> Params in render_image/<iid>/<z>/<t>/<q>/ are:
> - iid: Image ID
> - z: Z index
> - t: T index
> - q: JPEG quality of the returned image
> “”"
>
> On web gateway openmicroscopy/components/tools/OmeroWeb/omeroweb/webgateway/views.py file (notice the small differences with the original render_image_region call, we add the quality in the ctx parameter of the web gateway_cache and the value of float(q) / 100.0 in the compression parameter of the renderJpegRegion function):
>
> @login_required()
> def render_image_region_quality(request, iid, z, t, q, conn=None, **kwargs):
> """
> Returns a jpeg of the OMERO image, rendering only a region specified in query string as
> region=x,y,width,height and resizing it. E.g. region=0,512,256,256
> Rendering settings can be specified in the request parameters.
>
> @param request: http request
> @param iid: image ID
> @param z: Z index
> @param t: T index
> @param q: Jpeg compression quality
> @param conn: L{omero.gateway.BlitzGateway} connection
> @return: http response wrapping jpeg
> """
> server_id = request.session['connector'].server_id
> # if the region=x,y,w,h is not parsed correctly to give 4 ints then we simply provide whole image plane.
> # alternatively, could return a 404?
> #if h == None:
> # return render_image (request, iid, z, t, server_id=None, _conn=None, **kwargs)
> pi = _get_prepared_image(request, iid, server_id=server_id, conn=conn)
>
> if pi is None:
> raise Http404
> img, compress_quality = pi
>
> tile = request.REQUEST.get('tile', None)
> region = request.REQUEST.get('region', None)
> level = None
>
> if tile:
> try:
> img._prepareRenderingEngine()
> w, h = img._re.getTileSize()
> levels = img._re.getResolutionLevels() - 1
>
> zxyt = tile.split(",")
> #w = int(zxyt[3])
> #h = int(zxyt[4])
> level = levels-int(zxyt[0])
>
> x = int(zxyt[1])*w
> y = int(zxyt[2])*h
> except:
> logger.debug("render_image_region_quality: tile=%s" % tile)
> logger.debug(traceback.format_exc())
>
> elif region:
> try:
> xywh = region.split(",")
>
> x = int(xywh[0])
> y = int(xywh[1])
> w = int(xywh[2])
> h = int(xywh[3])
> except:
> logger.debug("render_image_region_quality: region=%s" % region)
> logger.debug(traceback.format_exc())
>
> # region details and quality in request are used as key for caching.
> jpeg_data = webgateway_cache.getImage(request, server_id, img, z, t, ctx=q)
> jpeg_quality = float(q) / 100.0
> if jpeg_data is None:
> """
> jpeg_data_orig = img.renderJpegRegion(z,t,x,y,w,h,level=level, compression=jpeg_quality)
> pillow_img = Image.open(StringIO(jpeg_data_orig))
> pillow_img = pillow_img.convert(mode="L")
> rv = StringIO()
> pillow_img.save(rv, 'jpeg', quality=int(10))
> jpeg_data = rv.getvalue()
> """
> jpeg_data = img.renderJpegRegion(z,t,x,y,w,h,level=level, compression=jpeg_quality)
> if jpeg_data is None:
> raise Http404
> webgateway_cache.setImage(request, server_id, img, z, t, jpeg_data, ctx=q)
>
> rsp = HttpResponse(jpeg_data, content_type='image/jpeg')
> return rsp
>
>
> _______________________________________________ ome-devel mailing list ome-devel at lists.openmicroscopy.org.uk <mailto:ome-devel at lists.openmicroscopy.org.uk>http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel <http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel>
> The University of Dundee is a registered Scottish Charity, No: SC015096
> _______________________________________________
> ome-devel mailing list
> ome-devel at lists.openmicroscopy.org.uk
> http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openmicroscopy.org.uk/pipermail/ome-devel/attachments/20150827/29f3e0aa/attachment.html>
More information about the ome-devel
mailing list