- Home »

Синтаксис изображений в Markdown — Примеры и советы
Если ты деплоишь документацию, ведёшь проектную wiki или просто создаёшь README для своего репозитория, то рано или поздно столкнёшься с необходимостью добавить изображения в Markdown. Казалось бы, что тут сложного? Но как только дело доходит до хостинга картинок, их оптимизации и интеграции с системами сборки, начинается настоящая магия.
Правильная работа с изображениями в Markdown не только делает твою документацию более наглядной, но и может серьёзно повлиять на скорость загрузки страниц, SEO-оптимизацию и общий пользовательский опыт. Особенно это критично, когда ты разворачиваешь документацию на собственном VPS или выделенном сервере.
Как работает синтаксис изображений в Markdown
Базовый синтаксис изображений в Markdown выглядит предельно просто:

Но дьявол, как всегда, в деталях. Давайте разберём каждый элемент:
- Alt text — альтернативный текст, который отображается при загрузке изображения или для screen readers
- URL — путь к изображению (может быть относительным или абсолютным)
- Optional title — всплывающая подсказка при наведении курсора
Также поддерживается референсный стиль:
![Alt text][reference-id]
[reference-id]: /path/to/image.jpg "Optional title"
Этот подход особенно удобен, когда одно и то же изображение используется несколько раз в документе.
Пошаговая настройка для различных сценариев
Рассмотрим несколько практических сценариев, с которыми ты наверняка столкнёшься:
Сценарий 1: Локальные изображения в проекте
Создай структуру папок:
project/
├── README.md
├── docs/
│ └── images/
│ ├── architecture.png
│ └── screenshots/
│ └── dashboard.jpg
└── assets/
└── logos/
└── company-logo.svg
Используй относительные пути:



Сценарий 2: Хостинг изображений на собственном сервере
Если у тебя есть собственный веб-сервер, можешь организовать централизованное хранение изображений:
# Создай директорию для изображений
sudo mkdir -p /var/www/html/images/docs
sudo chown -R www-data:www-data /var/www/html/images
# Настрой Nginx для обслуживания статики
sudo nano /etc/nginx/sites-available/default
Добавь в конфигурацию Nginx:
location /images/ {
alias /var/www/html/images/;
expires 30d;
add_header Cache-Control "public, immutable";
# Оптимизация для изображений
location ~* \.(jpg|jpeg|png|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
Теперь можешь использовать абсолютные URLs:

Примеры и кейсы использования
Сценарий | Преимущества | Недостатки | Рекомендации |
---|---|---|---|
Локальные изображения | • Быстрая загрузка • Полный контроль • Работает офлайн |
• Увеличивает размер репозитория • Сложности с версионированием |
Используй для небольших проектов и иконок |
Внешние CDN | • Быстрая загрузка • Не увеличивает размер репо |
• Зависимость от внешних сервисов • Могут пропасть |
Только для публичных проектов |
Собственный сервер | • Полный контроль • Кастомизация |
• Нужно настраивать и поддерживать | Идеально для корпоративных проектов |
Положительные примеры
Хороший пример с информативным alt-текстом:

Использование SVG для схем:

Отрицательные примеры
Плохо — неинформативный alt-текст:

Плохо — огромные изображения без оптимизации:

Автоматизация и скрипты
Вот несколько полезных скриптов для работы с изображениями:
Скрипт оптимизации изображений
#!/bin/bash
# optimize-images.sh
# Установка зависимостей
sudo apt-get install imagemagick optipng jpegoptim
# Функция оптимизации
optimize_images() {
local dir="$1"
# Оптимизация PNG
find "$dir" -name "*.png" -exec optipng -o7 {} \;
# Оптимизация JPEG
find "$dir" -name "*.jpg" -o -name "*.jpeg" | while read -r file; do
jpegoptim --size=500k "$file"
done
# Создание WebP версий
find "$dir" -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" | while read -r file; do
cwebp -q 80 "$file" -o "${file%.*}.webp"
done
}
optimize_images "./docs/images"
Скрипт проверки ссылок на изображения
#!/bin/bash
# check-image-links.sh
check_markdown_images() {
local file="$1"
# Извлекаем все ссылки на изображения
grep -oP '!\[.*?\]\(\K[^)]*' "$file" | while read -r link; do
if [[ $link =~ ^https?:// ]]; then
# Проверка внешних ссылок
if curl -s --head "$link" | head -n 1 | grep -q "200 OK"; then
echo "✓ $link"
else
echo "✗ $link (broken)"
fi
else
# Проверка локальных файлов
if [[ -f "$link" ]]; then
echo "✓ $link"
else
echo "✗ $link (not found)"
fi
fi
done
}
# Проверка всех markdown файлов
find . -name "*.md" -exec bash -c 'check_markdown_images "$0"' {} \;
Интеграция с системами сборки
Настройка с Jekyll
Для Jekyll можно создать плагин для автоматической оптимизации:
# _plugins/image_optimizer.rb
module Jekyll
class ImageOptimizer < Generator
def generate(site)
site.static_files.each do |file|
if file.extname =~ /\.(png|jpg|jpeg)$/i
optimize_image(file.path)
end
end
end
private
def optimize_image(path)
# Логика оптимизации
end
end
end
Настройка с GitLab CI
# .gitlab-ci.yml
image_optimization:
stage: build
script:
- apt-get update && apt-get install -y imagemagick optipng
- ./scripts/optimize-images.sh
- ./scripts/check-image-links.sh
artifacts:
paths:
- docs/images/
only:
changes:
- docs/images/**/*
Расширенные возможности
HTML внутри Markdown
Для более сложных случаев можно использовать HTML-теги:
<img src="architecture.png" alt="System architecture" width="800" height="600" loading="lazy">
Или создать адаптивные изображения:
<picture>
<source srcset="hero-desktop.webp" media="(min-width: 800px)" type="image/webp">
<source srcset="hero-mobile.webp" media="(max-width: 799px)" type="image/webp">
<img src="hero-fallback.jpg" alt="Hero image" loading="lazy">
</picture>
Интеграция с PlantUML
Для генерации диаграмм из кода:
#!/bin/bash
# generate-plantuml.sh
java -jar plantuml.jar -tsvg docs/diagrams/*.puml
# Автоматическое обновление ссылок в markdown
for file in docs/diagrams/*.svg; do
basename=$(basename "$file" .svg)
sed -i "s/\[Diagram: $basename\]//g" README.md
done
Полезные утилиты и инструменты
- ImageMagick — швейцарский нож для обработки изображений
- OptiPNG — оптимизация PNG без потери качества
- jpegoptim — оптимизация JPEG
- cwebp — конвертация в WebP формат
- PlantUML — создание диаграмм из текста
Интересные факты и нестандартные способы использования
Знаешь ли ты, что можно использовать Data URLs для встраивания небольших изображений прямо в Markdown?

Или создать ASCII-диаграммы для консольных приложений:
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Client │───▶│ Server │───▶│ Database │
└─────────────┘ └─────────────┘ └─────────────┘
```
Генерация изображений с помощью кода
Можно автоматически генерировать диаграммы архитектуры:
#!/bin/bash
# generate-architecture.sh
# Создание диаграммы сети с помощью Graphviz
cat > network.dot << EOF
digraph G {
rankdir=LR;
client [label="Client\n(React)" shape=box];
nginx [label="Nginx\n(Reverse Proxy)" shape=box];
api [label="API Server\n(Node.js)" shape=box];
db [label="Database\n(PostgreSQL)" shape=box];
client -> nginx;
nginx -> api;
api -> db;
}
EOF
dot -Tsvg network.dot -o docs/images/architecture.svg
Статистика и сравнения
Согласно исследованиям, правильная оптимизация изображений может:
- Сократить время загрузки страницы на 40-60%
- Уменьшить размер файлов PNG на 20-50% с помощью OptiPNG
- Сократить размер JPEG на 30-70% при конвертации в WebP
- Улучшить SEO-показатели благодаря правильным alt-тегам
Формат | Размер (KB) | Качество | Поддержка браузерами |
---|---|---|---|
PNG | 450 | Отличное | 100% |
JPEG | 180 | Хорошее | 100% |
WebP | 120 | Отличное | 95% |
AVIF | 80 | Отличное | 70% |
Заключение и рекомендации
Работа с изображениями в Markdown — это не просто вставка картинок, а целая система, которая влияет на производительность, пользовательский опыт и поддержку проекта. Вот мои основные рекомендации:
- Для небольших проектов — используй локальные изображения с относительными путями
- Для корпоративных проектов — настрой собственный сервер для хостинга изображений
- Для публичных проектов — рассмотри использование GitHub Pages или GitLab Pages
- Всегда оптимизируй — размер имеет значение, особенно для пользователей с медленным интернетом
- Автоматизируй — используй скрипты для проверки ссылок и оптимизации изображений
Правильная настройка изображений в Markdown поможет тебе создать качественную документацию, которая будет быстро загружаться и хорошо выглядеть на всех устройствах. А автоматизация этого процесса сэкономит время и избавит от рутинных задач.
Помни: хорошая документация — это инвестиция в будущее твоего проекта и твоей команды. Потрать время на настройку сейчас, и это окупится многократно в будущем.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.