Gabay sa Developer ng PlacePix
Kumpletong reference sa API at dokumentasyon ng mga tampok para sa self-hosted na serbisyo ng placeholder na larawan. Saklaw ang pag-deploy gamit ang Docker, smart crop, gradient placeholder, paggawa ng SVG, avatar na letra, at mga preset sa social media.
Ano ang PlacePix?
Ang PlacePix ay isang self-hosted na serbisyo ng placeholder na larawan na ginawa para sa mga developer at design team. Hindi tulad ng mga serbisyo ng placeholder ng third-party na nangangailangan ng external network calls at maaaring mawala, ang PlacePix ay tumatakbo nang buo sa iyong sariling imprastraktura. Ilagay ang mga larawan sa mga folder, at agad na makakakuha ng URL endpoints na naglilingkod ng mga resized, filtered, at formatted na larawan.
Ang serbisyo ay isinulat sa Python gamit ang FastAPI na may image processing na pinapagana ng Pillow at OpenCV. Sumusuporta ito sa Docker deployment, at S3-compatible na object storage.
Mga Tampok
- Zero configuration — ilagay ang mga larawan sa mga folder at go
- Face-aware cropping — Ang OpenCV ay nagdedetect at nagce-center ng mga mukha
- Gradient at SVG placeholder — hindi kailangan ng mga larawan
- Mga preset sa social media — Instagram, YouTube, TikTok sizes built-in
- Color search — hanapin ang mga larawang tumutugma sa palette ng iyong brand
- Avatar na letra — deterministic na profile images mula sa mga pangalan
Gabay sa Pag-deploy ng Docker
Ang pinakamabilis na paraan para patakbuhin ang PlacePix ay gamit ang Docker. Isang command lang ang nagde-deploy ng buong serbisyo na may smart scanning, color extraction, at ang embedded URL builder.
Isang Linya na Deployment
docker run -d -p 3000:3000 \
-v ./images:/app/images \
riadvice/placepix:latest
Docker Compose (Inirerekomenda)
services:
placepix:
image: riadvice/placepix:latest
ports:
- "3000:3000"
volumes:
- ./images:/app/images
- ./data:/app/data
environment:
- HOST=0.0.0.0:3000
- UPLOAD_ENABLED=true
- WATERMARK_ENABLED=false
restart: unless-stopped
Matibay na Data at Kapaligiran
I-mount pareho ang /app/images (iyong library ng larawan) at /app/data (scan cache at metadata) para mapreserba ang estado sa mga container restart. I-configure ang pag-uugali sa pamamagitan ng mga environment variable o isang .env file.
OVHcloud S3-Compatible na Storage
Sinusuportahan ng PlacePix ang anumang S3-compatible na backend. Para sa OVHcloud Object Storage, itakda ang:
S3_ENABLED=true
S3_ENDPOINT=https://s3.rbx.io.cloud.ovh.net
S3_ACCESS_KEY=your-key
S3_SECRET_KEY=your-secret
S3_BUCKET=your-bucket
S3_REGION=rbx
Smart Cropping na may Face Awareness
Ang standard na center cropping ay maaaring hiwaan ang mga mukha sa portrait photography. Inaayos ito ng PlacePix sa pamamagitan ng smart cropping na may face awareness na pinapagana ng OpenCV Haar cascades.
Paano ito Gumagana
Kapag ang isang request ay may ?fit=smart, ini-scan ng PlacePix ang larawan para sa mga human face gamit ang OpenCV. Kung may mga mukhang nadetect, ang crop window ay inilipat para ang face centroid ay malapit sa golden-ratio intersection points. Kung walang mukhang nahanap, bumabalik ito sa standard na center cropping.
Mga Halimbawa ng API
# Face-aware crop (nagde-detect at nagce-center ng mga mukha)
/400/300/people?fit=smart
# Standard na center crop
/400/300/people?fit=crop
# Cover fill (maaaring mastretch)
/400/300/people?fit=cover
# Contain (letterboxing)
/400/300/people?fit=contain
Kailangang Gamitin ang Smart Crop
- Portrait photography at headshots
- Mga team page kung saan mahalaga ang mga mukha
- Mga thumbnail sa social media
- Anumang scenario kung saan ang geometric center cropping ay sumisira sa composition
API ng Gradient Placeholder
Bumuo ng mga linear at radial gradient na larawan on-the-fly nang hindi nag-uupload ng anumang assets. Perpekto para sa hero backgrounds, loading states, at design mockups.
Syntaks ng Endpoint
/gradient/{width}/{height}/{from_hex}/{to_hex}
Mga Halimbawa
# Simpleng linear gradient (mula taas pababa)
/gradient/800/400/3b82f6/10b981
# 45-degree na angled gradient
/gradient/800/400/e11d48/f59e0b?angle=45
# Radial gradient mula sa gitna
/gradient/800/400/1e293b/64748b?gradient_type=radial
# May output format
/gradient/800/400/0ea5e9/ffffff?format=webp&quality=80
Sanggunian sa Parameter
{from_hex}/{to_hex}— hex colors nang walang # prefix?angle=45— linear angle sa degrees (0-360)?gradient_type=radial— lumilipat sa radial gradient?format=webp— WebP output (mas maliit na file size)
Tagabuo ng SVG Placeholder
Ang mga SVG placeholder ay hindi nangangailangan ng server-side image processing. Sila ay generated bilang inline SVG na may customizable background color, foreground color, at text label.
Endpoint
/svg/{width}/{height}?bg={hex}&fg={hex}&text={label}
Mga Halimbawa
# Default na wireframe placeholder
/svg/400/300
# Custom brand colors
/svg/400/300?bg=1c1917&fg=0ea5e9
# May custom text
/svg/400/300?bg=0ea5e9&fg=ffffff&text=Hero+Section
Bakit SVG?
- File size sa ilalim ng 500 bytes
- Infinitely scalable nang walang quality loss
- Zero server processing overhead
- Perpekto para sa wireframes at low-fidelity prototypes
Color Search API
Bawat larawan sa PlacePix ay ini-scan para sa 3 dominant colors nito. Maaari mong i-search ang buong library gamit ang hex color para makahanap ng mga larawang tumutugma sa palette ng iyong brand.
Endpoints
# Get an image matching a specific hex color
/color/0ea5e9/400/300
# Filter any endpoint by dominant color
/400/300/nature?color=d97706
# List all images matching a color
/api/color/3b82f6
How Color Scanning Works
Sa startup, ang PlacePix ay kumukuha ng pinakamadalas na mga kulay mula sa bawat larawan gamit ang k-means clustering sa LAB color space. Ito ay gumagawa ng perceptually accurate matches sa halip na raw RGB averages. Ang palette page (/palette) ay nag-visualize ng mga kulay na ito at nagbibigay-daan sa pag-browse ayon sa kategorya ng hue.
Orientation Filtering
Filter random images by their native aspect ratio before selection. This is useful when you need images that naturally fit a layout — landscape for headers, portrait for cards, or squarish for thumbnails.
Endpoints
# Landscape images (width > height)
/400/300?orientation=landscape
# Portrait images (height > width)
/400/300?orientation=portrait
# Squarish images (within 15% of 1:1 by default)
/400/300?orientation=squarish
# Combined with other filters
/400/300/nature?orientation=landscape&seed=spring
/color/0ea5e9/400/300?orientation=portrait
/api/color/3b82f6?orientation=landscape
Configuration
The squarish tolerance is configurable via the ORIENTATION_SQUARISH_TOLERANCE environment variable (default: 0.15). A value of 0.15 means images with an aspect ratio between 0.85 and 1.15 are considered squarish. Set to 0.0 for exact 1:1 only.
How It Works
PlacePix reads image dimensions from file headers during the initial scan (local files) and during the background metadata scan (S3 images). The dimensions are stored in memory and used to filter the candidate pool before random or seeded selection. If orientation is requested but no images match, a 404 is returned.
Mga Filter at Epekto
Ilapat ang mga real-time filter at epekto sa anumang larawan sa pamamagitan ng query parameters. Lahat ng processing ay ginagawa sa server-side at naka-cache para sa mga susunod na kahilingan.
Mga Pag-aayos ng Kulay
?grayscale=1 # Black & white
?sepia=1 # Warm na sepia tone
?tint=0ea5e9 # Hex color overlay
?brightness=1.3 # 0.0 hanggang 2.0
?contrast=1.2 # 0.0 hanggang 2.0
?saturation=2.0 # 0.0 hanggang 2.0
?invert=true # Invert colors
?posterize=4 # Mga antas ng kulay (1-8)
?duotone=ff0000,0000ff # Two-color map
Mga Epekto ng Larawan
?blur=2 # Gaussian blur (1-10)
?sharpen=1.5 # Halaga ng sharpen
?emboss=true # 3D relief
?edges=sobel # Edge detection
?edges=canny # Canny edges
?halftone=4 # Dot pattern
?oil_painting=true # Oil painting style
?pencil_sketch=true # Pencil sketch
?cartoon=true # Cartoon effect
?vignette=0.5 # Darken edges (0-1)
Mga Parameter ng Overlay
?text=Hello+World # Text overlay
?border=4,ffffff # Lapad at kulay ng border
?watermark=1 # Ilapat ang naka-configure na watermark
?padding=20 # Internal padding
Avatar Generator
Bumuo ng mga deterministic avatar mula sa anumang pangalan o email. Sinusuportahan ng PlacePix ang dalawang uri ng avatar: Avatar na letra (mga kulay na inisyal) at Multiavatar (mga multikultural na vector avatar).
Endpoint
/avatar/{size}/{name}
/avatar/{size}/{name}.{ext}
Mga Parameter
type— avatar type:letter(default) ormultiavatarsize— pixel size (e.g.64,128,256)name— any string; used as seed for the avatar
Avatar na letra (type=letter)
circle— crop to a circle shapeborder={width}— magdagdag ng borderborder_color={hex}— kulay ng borderbg={hex}— override background colorfg={hex}— override text/foreground colorsingle=true— use only the first letteruppercase=false— preserve lowercase letterspalette={name}— choose fromflatui,material,pastel,neon,cool,warm
Multiavatar (type=multiavatar)
env— include environment background (trueby default,falseto omit)part— specific part code (optional, e.g.11)theme— specific theme code (optional, e.g.C)
Mga Halimbawa
# Simple 128px letter avatar
/avatar/128/John+Doe
# Circle letter avatar with custom border
/avatar/128/John+Doe?circle=true&border=2&border_color=ffffff
# Single initial, pastel palette
/avatar/64/Alice?single=true&palette=pastel
# SVG letter output (scalable, under 500 bytes)
/avatar/128/John+Doe.svg
# Multiavatar (multicultural vector avatar)
/avatar/128/Binx+Bond?type=multiavatar
# Multiavatar without environment background
/avatar/128/Binx+Bond?type=multiavatar&env=false
# Specific multiavatar version
/avatar/128/Binx+Bond?type=multiavatar&part=11&theme=C
Bakit Gumamit ng Avatar na Letra?
- Walang panlabas na dependency — walang Gravatar o serbisyo ng avatar ng third party
- Deterministiko — ang parehong pangalan ay laging nagbubunga ng parehong kulay
- Suporta sa SVG — walang hangganang scalable, perpekto para sa mga HiDPI display
- Anim na built-in na color palette para sa anumang brand aesthetic
Bakit Gumamit ng Multiavatar?
- 12 bilyong natatanging multikultural na avatar
- Deterministiko — ang parehong pangalan ay laging nagbubunga ng parehong avatar
- Malinis na SVG output — maliit na laki ng file, walang hangganang scalable
- Walang kinakailangang panlabas na API calls
Mabilis na Sanggunian sa REST API
Lahat ng endpoints ay sumusuporta sa CORS at nagre-return ng mga larawan na may long-term cache headers. Base64 JSON output ay available para sa mga maliit na thumbnail.
Mga Endpoint ng Larawan
GET /{width}/{height}/{category}— Random na larawan mula sa kategoryaGET /{width}/{height}— Random na larawan mula sa lahat ng kategoryaGET /id/{id}/{width}/{height}— Tiyak na larawan ayon sa IDGET /ratio/{ratio}/{width}/{category}— Aspect ratio na larawanGET /preset/{preset}/{category}— Social media presetGET /color/{hex}/{width}/{height}— Color-matched na larawanGET /gradient/{w}/{h}/{from}/{to}— Gradient na larawanGET /svg/{width}/{height}— SVG placeholderGET /avatar/{size}/{name}— Avatar na letra (PNG/SVG)
Mga Endpoint ng Metadata
GET /api/images— Listahan ng mga kategorya at totalGET /api/info/id/{id}— Metadata ng larawan (dimension, kulay, format)GET /api/color/{hex}— Mga larawang tumutugma sa kulay
Mga Health Endpoint
GET /health— Liveness probe (Docker/K8s)GET /ready— Readiness probe (503 hanggang ma-load ang mga larawan)
Kasanayan at Kredensyal
- Mga aktibong contributor sa open-source ecosystem mula 2008
- Lahat ng code ay open source sa ilalim ng MIT License at naaudit sa GitHub
Mga Madalas na Tanong
Paano ko ide-deploy ang PlacePix gamit ang Docker?
I-run docker run -d -p 3000:3000 -v ./images:/app/images riadvice/placepix:latest. I-mount ang iyong image folder at ang serbisyo ay agad na mag-start na may smart scanning na naka-enable.
Ano ang smart cropping na may face awareness?
Ang PlacePix ay gumagamit ng OpenCV Haar cascades para ma-detect ang mga mukha sa mga larawan. Kapag nagdagdag ka ng ?fit=smart sa anumang URL, ang crop region ay inilipat para mag-center sa mga detected na mukha sa halip na gumamit ng geometric center. Kung walang mukha na nahanap, bumabalik ito sa standard na center cropping.
Maaari ba akong gumawa ng mga gradient placeholder na larawan nang hindi nag-a-upload ng mga larawan?
Oo. Ang /gradient/{width}/{height}/{from}/{to} endpoint ay gumagawa ng mga gradient na larawan nang buo mula sa URL parameters. Walang kailangang mga uploaded na larawan. Maaari ka ring gumawa ng mga SVG placeholder gamit ang /svg/{width}/{height}.
Paano ako gumagawa ng mga Instagram story size placeholder na larawan sa pamamagitan ng API?
Gamitin ang preset endpoint: /preset/instagram-story/{category}. Ito ay nagre-return ng 1080x1920 na larawan. I-combine with ?format=webp&quality=70 para sa optimized delivery at ?fit=smart para sa portrait-safe cropping.
Sinusuportahan ba ng PlacePix ang S3-compatible na object storage?
Oo. Ang PlacePix ay gumagana kasama ang OVHcloud Object Storage, AWS S3, MinIO, at anumang S3-compatible provider. I-configure ang endpoint, bucket, access key, at secret key sa pamamagitan ng mga environment variable.
Ano ang mga suportadong format ng output?
WebP, AVIF, JPEG, PNG, SVG, at base64 JSON. Gamitin ang .webp, .avif, o .png bilang file extension, o magdagdag ng ?format=webp bilang query parameter. Ang AVIF ay nagpuproduce ng pinakamaliit na mga file; ang PNG ay lossless.
Libre ba ang PlacePix para sa komersyal na paggamit?
Oo. Ang PlacePix ay inilabas sa ilalim ng MIT License at libre para sa parehong personal at komersyal na paggamit. Dahil ito ay self-hosted, walang mga limitasyon sa paggamit, walang API keys, at walang per-request billing.