Medical-research-skills dpi-upscaler-checker
Check if images meet 300 DPI printing standards, and intelligently restore blurry low-resolution images using AI super-resolution technology.
git clone https://github.com/aipoch/medical-research-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/aipoch/medical-research-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/scientific-skills/Other/dpi-upscaler-checker" ~/.claude/skills/aipoch-medical-research-skills-dpi-upscaler-checker && rm -rf "$T"
scientific-skills/Other/dpi-upscaler-checker/SKILL.mdDPI Upscaler & Checker
Check if images meet 300 DPI printing standards, and intelligently restore blurry low-resolution images using AI super-resolution technology.
Input Validation
This skill accepts: image files (JPG, PNG, TIFF, BMP, WebP) or folder paths for DPI checking and/or AI super-resolution upscaling.
If the user's request does not involve image DPI checking or upscaling — for example, asking to analyze text documents, process audio files, or perform general data analysis — do not proceed with the workflow. Instead respond:
"dpi-upscaler-checker is designed to check image DPI standards and restore low-resolution images. Your request appears to be outside this scope. Please provide an image file path or folder, or use a more appropriate tool for your task."
Do not continue the workflow when the request is out of scope, missing a critical input (
--input path), or would require unsupported assumptions. For missing inputs, state exactly which fields are missing.
When to Use
- Check whether images meet 300 DPI printing standards
- Upscale or restore low-resolution images using AI super-resolution
- Batch-process folders of mixed-DPI images for print readiness
Quick Check
python -m py_compile scripts/main.py python scripts/main.py --help python scripts/main.py --demo python -c "import PIL; print('Pillow OK')" python scripts/main.py check --input image.jpg --json
Workflow
- Validate input first — confirm the request is within scope and
path is provided before any processing.--input - Confirm the user objective, required inputs, and non-negotiable constraints.
- Use the packaged script path or the documented reasoning path with only the inputs that are actually available.
- Return a structured result that separates assumptions, deliverables, risks, and unresolved items.
- If execution fails or inputs are incomplete, switch to the fallback path and state exactly what blocked full completion.
Usage
Check Single Image DPI
python scripts/main.py check --input image.jpg python scripts/main.py check --input image.jpg --json # JSON to stdout for agent consumption
Batch Check Folder
python scripts/main.py check --input ./images/ --output report.json
Super-Resolution Restoration
python scripts/main.py upscale --input image.jpg --output upscaled.jpg --scale 4
Batch Fix Low DPI Images
python scripts/main.py upscale --input ./images/ --output ./output/ --min-dpi 300 --scale 2
Demo Mode (no real images required)
python scripts/main.py --demo
Parameters
Check Command
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
| string | - | Yes | Input image path or folder |
| string | stdout | No | Output report path |
| int | 300 | No | Target DPI threshold |
| flag | false | No | Output results as JSON to stdout |
Upscale Command
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
| string | - | Yes | Input image path or folder |
| string | - | Yes | Output path |
| int | 2 | No | Scale factor (2/3/4) |
| int | - | No | Only process images below this DPI |
| int | 0 | No | Denoise level (0-3) |
| flag | false | No | Enable face enhancement |
Output
DPI Check Report (JSON)
{ "file": "image.jpg", "dpi": [72, 72], "width_px": 1920, "height_px": 1080, "print_width_cm": 67.7, "print_height_cm": 38.1, "meets_300dpi": false, "recommended_scale": 4.17 }
Restored Image
- Saved as
<original_filename>_upscaled.<extension> - Preserves original EXIF information
- Sets DPI metadata to target value
Algorithm
- DPI:
;print_size_cm = (pixel_count / dpi) * 2.54recommended_scale = target_dpi / avg_dpi - Super-resolution fallback chain: Real-ESRGAN → OpenCV DNN → PIL Lanczos
- RGBA alpha channel upscaled separately and reattached
Known Limitations
- Super-resolution cannot create non-existent information; extremely blurry images have limited improvement
- GPU acceleration requires CUDA environment (optional)
- Batch upscale mode does not currently save a JSON summary report (only check mode saves JSON to
)--output - EXIF parsing uses
— bare except replaced with specific exception typesexcept (AttributeError, KeyError, TypeError, ZeroDivisionError) - Output format parameters are conditioned on file extension (JPEG:
; PNG:quality=95
)compress_level=6 - Batch processing uses
; resolve paths withPath.rglob
before processing to avoid unexpected directory traversal via symlinkspath.resolve()
Fallback Behavior
If
scripts/main.py fails or required inputs are incomplete:
- Report the exact failure point and error message (sanitized — no internal paths).
- State what can still be completed safely (e.g., DPI check without upscale).
- Manual fallback:
.from PIL import Image; img = Image.open('file.jpg'); print(img.info.get('dpi')) - Do not fabricate execution outcomes or file contents.
Error Handling
- If required inputs are missing, state exactly which fields are missing and request only the minimum additional information.
- If the task goes outside the documented scope, stop instead of guessing or silently widening the assignment.
- If
fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.scripts/main.py - Do not fabricate files, citations, data, search results, or execution outcomes.
- Script exits with non-zero code on error in both check and upscale modes.
Response Template
- Objective
- Inputs Received
- Assumptions
- Workflow
- Deliverable
- Risks and Limits
- Next Checks
Dependencies
- Python >= 3.8
- Pillow >= 9.0.0
- opencv-python >= 4.5.0
- numpy >= 1.21.0
- realesrgan (optional, for best results)
pip install -r requirements.txt