width = self.get_argument('width', None)
height = self.get_argument('height', None)
+ width = width and float(width)
+ height = height and float(height)
+
camera_config = config.get_camera(camera_id)
if utils.local_motion_camera(camera_config):
picture = mediafiles.get_current_picture(camera_config,
sio = StringIO.StringIO(jpg)
image = Image.open(sio)
+ if width and width < 1: # given as percent
+ width = int(width * image.size[0])
+ if height and height < 1: # given as percent
+ height = int(height * image.size[1])
+
width = width and int(width) or image.size[0]
height = height and int(height) or image.size[1]
_PREFS_FILE_NAME = 'prefs.json'
_DEFAULT_PREFS = {
'layout_columns': 3,
- 'refresh_factor': 1
+ 'framerate_factor': 1,
+ 'resolution_factor': 1
}
_prefs = None
var fullScreenCameraId = null;
var inProgress = false;
var refreshInterval = 15; /* milliseconds */
-var refreshFactor = 1;
+var framerateFactor = 1;
+var resolutionFactor = 1;
var username = '';
var password = '';
var basePath = null;
savePrefs();
});
$('#framerateDimmerSlider').change(function () {
- refreshFactor = parseInt(this.value) / 100;
+ framerateFactor = parseInt(this.value) / 100;
+ savePrefs();
+ });
+ $('#resolutionDimmerSlider').change(function () {
+ resolutionFactor = parseInt(this.value) / 100;
savePrefs();
});
function prefsUi2Dict() {
var dict = {
'layout_columns': $('#layoutColumnsSlider').val(),
- 'refresh_factor': $('#framerateDimmerSlider').val() / 100
+ 'framerate_factor': $('#framerateDimmerSlider').val() / 100,
+ 'resolution_factor': $('#resolutionDimmerSlider').val() / 100
};
return dict;
function dict2PrefsUi(dict) {
$('#layoutColumnsSlider').val(dict['layout_columns']);
- $('#framerateDimmerSlider').val(dict['refresh_factor'] * 100);
+ $('#framerateDimmerSlider').val(dict['framerate_factor'] * 100);
+ $('#resolutionDimmerSlider').val(dict['resolution_factor'] * 100);
updateConfigUI();
}
function applyPrefs(dict) {
setLayoutColumns(dict['layout_columns']);
- refreshFactor = dict['refresh_factor'];
+ framerateFactor = dict['framerate_factor'];
+ resolutionFactor = dict['resolution_factor'];
}
function savePrefs() {
}
var path = basePath + 'picture/' + cameraId + '/current/?_=' + timestamp;
- if (serverSideResize) {
+ if (resolutionFactor != 1) {
+ path += '&width=' + resolutionFactor;
+ }
+ else if (serverSideResize) {
path += '&width=' + img.width;
}
var count = parseInt(1000 / (refreshInterval * this.config['streaming_framerate']));
var serverSideResize = this.config['streaming_server_resize'];
- count /= refreshFactor;
+ count /= framerateFactor;
if (this.img.error) {
/* in case of error, decrease the refresh rate to 1 fps */
<tr class="settings-item" min="1" max="4" snap="1" ticksnum="4" decimals="0" id="layoutColumnsRow">
<td class="settings-item-label"><span class="settings-item-label">Layout Columns</span></td>
<td class="settings-item-value"><input type="text" class="range styled prefs" id="layoutColumnsSlider"></td>
- <td><span class="help-mark" title="configures the number of columns to use when laying out the camera frames">?</span></td>
+ <td><span class="help-mark" title="configures the number of columns used to lay out the camera frames">?</span></td>
</tr>
<tr class="settings-item" min="0" max="100" snap="2" ticksnum="6" decimals="0">
<td class="settings-item-label"><span class="settings-item-label">Frame Rate Dimmer</span></td>
<td class="settings-item-value"><input type="text" class="range styled prefs" id="framerateDimmerSlider"></td>
- <td><span class="help-mark" title="dims the actual frame refreshing rate to save network bandwidth and traffic (doesn't work on simple MJPEG cameras)">?</span></td>
+ <td><span class="help-mark" title="dims the global frame rate to save network bandwidth and traffic (doesn't work on simple MJPEG cameras)">?</span></td>
+ </tr>
+ <tr class="settings-item" min="1" max="100" snap="2" ticks="1|20|40|60|80|100" decimals="0">
+ <td class="settings-item-label"><span class="settings-item-label">Resolution Dimmer</span></td>
+ <td class="settings-item-value"><input type="text" class="range styled prefs" id="resolutionDimmerSlider"></td>
+ <td><span class="help-mark" title="dims the actual resolution of all cameras to save network bandwidth and traffic (doesn't work on simple MJPEG cameras)">?</span></td>
</tr>
</table>
+ <tr class="settings-item advanced-setting">
+ <td colspan="100"><div class="settings-item-separator" style="margin: 0px 0px 1.5em 0px;"></div></td>
+ </tr>
+
<!-- General Settings -->
<div class="settings-section-title" id="generalSectionDiv">
<span class="help-mark" title="general settings, not related to any camera">?</span>