dgtlmoon/changedetection.io · warning · ValidationError
Bounding box values are too large
Error message
Bounding box values are too large
What it means
Each of the four bounding-box integers must be ≤ 10000 (a reasonable maximum screen dimension). Values above that raise ValidationError, preventing absurd crop regions that would break or slow the SSIM image diff.
Source
Thrown at changedetectionio/processors/image_ssim_diff/forms.py:31
def validate_bounding_box(form, field):
"""Validate bounding box format: x,y,width,height with integers."""
if not field.data:
return # Optional field
if len(field.data) > 100:
raise ValidationError(_l('Bounding box value is too long'))
# Should be comma-separated integers
if not re.match(r'^\d+,\d+,\d+,\d+$', field.data):
raise ValidationError(_l('Bounding box must be in format: x,y,width,height (integers only)'))
# Validate values are reasonable (not negative, not ridiculously large)
parts = [int(p) for p in field.data.split(',')]
for part in parts:
if part < 0:
raise ValidationError(_l('Bounding box values must be non-negative'))
if part > 10000: # Reasonable max screen dimension
raise ValidationError(_l('Bounding box values are too large'))
def validate_selection_mode(form, field):
"""Validate selection mode value."""
if not field.data:
return # Optional field
if field.data not in ['element', 'draw']:
raise ValidationError(_l('Selection mode must be either "element" or "draw"'))
class processor_settings_form(processor_text_json_diff_form):
"""Form for fast image comparison processor settings."""
processor_config_min_change_percentage = IntegerField(
_l('Minimum Change Percentage'),
validators=[
validators.Optional(),View on GitHub (pinned to 5d9c7c6da7)
Solutions
- Clamp each value to ≤10000, or crop the region to a sub-area under the limit
- Verify you are supplying width/height, not x2/y2 end coordinates
- If the source image really is taller than 10000px, pre-scale or split the watch into regions
Example fix
# before bounding_box = '0,0,19200,43200' # after bounding_box = '0,0,1920,1080' # use actual width/height, not end coords
Defensive patterns
Strategy: validation
Validate before calling
parts = [int(p) for p in bbox.split(',')]
if any(p > 10000 for p in parts):
parts = [min(p, 10000) for p in parts] # or reject
bbox = ','.join(map(str, parts)) Type guard
def bbox_within_limits(s: str, limit: int = 10000) -> bool:
return all(int(p) <= limit for p in s.split(',')) Prevention
- Supply width/height, not end coordinates
- Pre-scale very large screenshots or split into multiple watch regions
When it happens
Trigger: Submitting coordinates or dimensions greater than 10000, e.g. '0,0,20000,20000' for a huge screenshot, or a width/height computed as x2/y2 end-coordinates from a tool that reports absolute pixel extents of very large images.
Common situations: Full-page screenshots of very long pages where height legitimately exceeds 10000px; confusion between width/height and right/bottom coordinates; retina/zoom-scaled coordinates doubling the expected values.
Related errors
- Bounding box value is too long
- Bounding box must be in format: x,y,width,height (integers o
- Bounding box values must be non-negative
- RegEx '%s' is not a valid regular expression.
- Empty value not allowed.
AI-assisted analysis of dgtlmoon/changedetection.io@5d9c7c6da7 (2026-08-27).
Data as JSON: /api/errors/ea6add57fee038ec.
Report an issue: GitHub.