44
55import json
66
7+ from branca .element import Element , Figure
78from branca .utilities import image_to_url
89
910from folium .map import Layer
@@ -110,10 +111,11 @@ class ImageOverlay(Layer):
110111 """
111112 def __init__ (self , image , bounds , opacity = 1. , attr = None ,
112113 origin = 'upper' , colormap = None , mercator_project = False ,
113- overlay = True , control = True ):
114+ overlay = True , control = True , pixelated = True ):
114115 super (ImageOverlay , self ).__init__ (overlay = overlay , control = control )
115116 self ._name = 'ImageOverlay'
116117 self .overlay = overlay
118+ self .pixelated = pixelated
117119
118120 if mercator_project :
119121 image = mercator_transform (image ,
@@ -140,6 +142,26 @@ def __init__(self, image, bounds, opacity=1., attr=None,
140142 {% endmacro %}
141143 """ )
142144
145+ def render (self , ** kwargs ):
146+ super (ImageOverlay , self ).render ()
147+
148+ figure = self .get_root ()
149+ assert isinstance (figure , Figure ), ('You cannot render this Element '
150+ 'if it is not in a Figure.' )
151+ pixelated = """<style>
152+ .leaflet-image-layer {
153+ image-rendering: -webkit-optimize-contrast; /* old android/safari*/
154+ image-rendering: crisp-edges; /* safari */
155+ image-rendering: pixelated; /* chrome */
156+ image-rendering: -moz-crisp-edges; /* firefox */
157+ image-rendering: -o-crisp-edges; /* opera */
158+ -ms-interpolation-mode: nearest-neighbor; /* ie */
159+ }
160+ </style>"""
161+
162+ if self .pixelated :
163+ figure .header .add_child (Element (pixelated ), name = 'leaflet-image-layer' )
164+
143165 def _get_self_bounds (self ):
144166 """
145167 Computes the bounds of the object itself (not including it's children)
0 commit comments