boards: convert images to JPEG and reduce image size
The boards folder uses ~142.8 MB, being the largest in the repository. This is due mostly to board images, which are in most cases not optimized for web content. This patch tries to address this problem by converting all pictures to JPEG (quality 75) and by adjusting its size up to 750 px (the width of the documentation content). Images that specified a fixed width in rst files are converted down to that value instead. With this patch, folder goes down to ~53.5 MB from 142.8 MB (-~63%). Note that this patch introduces a new set of binary files to git history, though (bad). The process has been automated using this quickly crafted Python script: ```python from pathlib import Path import re import subprocess def process(doc, image, image_jpeg, size): subprocess.run( ( f"convert {image}" "-background white -alpha remove -alpha off -quality 75" f"-resize {size}\> {image_jpeg}" ), shell=True, check=True, cwd=doc.parent, ) if image != image_jpeg: (doc.parent / image).unlink() for doc in Path(".").glob("boards/**/*.rst"): with open(doc) as f: content = "" image = None for line in f: m = re.match(r"^(\s*)\.\. (image|figure):: (.*)$", line) if m: if image: process(doc, image, image_jpeg, size) image = Path(m.group(3)) if image.suffix not in (".jpg", ".jpeg", ".png"): content += line image = None continue image_jpeg = image.parent / (image.stem + ".jpg") size = 750 content += ( f"{m.group(1)}.. {m.group(2)}:: {image_jpeg}\n" ) elif image: m = re.match(r"\s*:height:\s*[0-9]+.*$", line) if m: continue m = re.match(r"\s*:width:\s*([0-9]+).*$", line) if m: size = min(int(m.group(1)), size) continue content += line if line == "\n": process(doc, image, image_jpeg, size) image = None else: content += line with open(doc, "w") as f: f.write(content) ``` Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
BIN
boards/arm/nucleo_f410rb/doc/img/nucleo_f410rb.jpg
Normal file
After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 965 KiB |
After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 867 KiB |
After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 731 KiB |
After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 617 KiB |
|
@ -25,10 +25,8 @@ some highlights of the Nucleo F410RB board:
|
|||
- Three LEDs: USB communication (LD1), user LED (LD2), power LED (LD3)
|
||||
- Two push-buttons: USER and RESET
|
||||
|
||||
.. image:: img/nucleo_f410rb.png
|
||||
:width: 720px
|
||||
.. image:: img/nucleo_f410rb.jpg
|
||||
:align: center
|
||||
:height: 720px
|
||||
:alt: Nucleo F410RB
|
||||
|
||||
More information about the board can be found at the `Nucleo F410RB website`_.
|
||||
|
@ -109,25 +107,17 @@ input/output, pull-up, etc.
|
|||
|
||||
Available pins:
|
||||
---------------
|
||||
.. image:: img/nucleo_f410rb_arduino_top_left.png
|
||||
:width: 720px
|
||||
.. image:: img/nucleo_f410rb_arduino_top_left.jpg
|
||||
:align: center
|
||||
:height: 540px
|
||||
:alt: Nucleo F410RB Arduino connectors (top left)
|
||||
.. image:: img/nucleo_f410rb_arduino_top_right.png
|
||||
:width: 720px
|
||||
.. image:: img/nucleo_f410rb_arduino_top_right.jpg
|
||||
:align: center
|
||||
:height: 540px
|
||||
:alt: Nucleo F410RB Arduino connectors (top right)
|
||||
.. image:: img/nucleo_f410rb_morpho_top_left.png
|
||||
:width: 720px
|
||||
.. image:: img/nucleo_f410rb_morpho_top_left.jpg
|
||||
:align: center
|
||||
:height: 540px
|
||||
:alt: Nucleo F410RB Morpho connectors (top left)
|
||||
.. image:: img/nucleo_f410rb_morpho_top_right.png
|
||||
:width: 720px
|
||||
.. image:: img/nucleo_f410rb_morpho_top_right.jpg
|
||||
:align: center
|
||||
:height: 540px
|
||||
:alt: Nucleo F410RB Morpho connectors (top right)
|
||||
|
||||
For mode details please refer to `STM32 Nucleo-64 board User Manual`_.
|
||||
|
|