Skip to content

Commit c45f1c9

Browse files
committed
Moved RGB rendering parameter retrieval into separate methods.
1 parent c920feb commit c45f1c9

File tree

1 file changed

+32
-22
lines changed

1 file changed

+32
-22
lines changed

raster/views.py

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,25 @@ def get_algebra(self, data, formula):
322322
# Return rendered image
323323
return self.write_img_to_response(img, stats)
324324

325+
def get_rgb_scale(self):
326+
if 'scale' not in self.request.GET:
327+
return
328+
329+
# The scale is either a number or two numbers separated by comma.
330+
scale = self.request.GET.get('scale').split(',')
331+
if len(scale) == 1:
332+
scale_min = 0
333+
scale_max = float(scale[0])
334+
else:
335+
# Get min an max scale from
336+
scale_min = float(scale[0])
337+
scale_max = float(scale[1])
338+
339+
return scale_min, scale_max
340+
341+
def get_alpha(self):
342+
return 'alpha' in self.request.GET
343+
325344
def get_rgb(self, data):
326345
# Get data arrays from tiles, by band if requested.
327346
for key, tile in data.items():
@@ -374,33 +393,24 @@ def get_rgb(self, data):
374393
return HttpResponse(result.vsi_buffer, content_type)
375394

376395
# Get scale for the image value range.
377-
if 'scale' in self.request.GET:
378-
# The scale is either a number or two numbers separated by comma.
379-
scale = self.request.GET.get('scale').split(',')
380-
if len(scale) == 1:
381-
scale_min = 0
382-
scale_max = float(scale[0])
383-
else:
384-
# Get min an max scale from
385-
scale_min = float(scale[0])
386-
scale_max = float(scale[1])
387-
388-
# Clip the image minimum.
389-
red[red < scale_min] = scale_min
390-
green[green < scale_min] = scale_min
391-
blue[blue < scale_min] = scale_min
396+
scale = self.get_rgb_scale()
397+
if scale is not None:
398+
# Clip the image minimum.
399+
red[red < scale[0]] = scale[0]
400+
green[green < scale[0]] = scale[0]
401+
blue[blue < scale[0]] = scale[0]
392402

393403
# Clip the image maximum.
394-
red[red > scale_max] = scale_max
395-
green[green > scale_max] = scale_max
396-
blue[blue > scale_max] = scale_max
404+
red[red > scale[1]] = scale[1]
405+
green[green > scale[1]] = scale[1]
406+
blue[blue > scale[1]] = scale[1]
397407

398408
# Scale the image.
399-
red = 255 * (red - scale_min) / scale_max
400-
green = 255 * (green - scale_min) / scale_max
401-
blue = 255 * (blue - scale_min) / scale_max
409+
red = 255 * (red - scale[0]) / scale[1]
410+
green = 255 * (green - scale[0]) / scale[1]
411+
blue = 255 * (blue - scale[0]) / scale[1]
402412

403-
if 'alpha' in self.request.GET:
413+
if self.get_alpha():
404414
mode = 'RGBA'
405415
reshape = 4
406416
# Create the alpha channel.

0 commit comments

Comments
 (0)