Dấu ngày kiểu máy film
Dòng ngày LED màu cam của máy film ngày xưa, tên nơi chụp cùng dòng và một dòng chữ của bạn bên dưới. Đặt riêng từng ảnh hoặc cho tất cả.
Miễn phí · Mã nguồn mở · Không cần tài khoản Riêng tư — ảnh không bao giờ rời khỏi máy của bạn
Không có internet, và vẫn chưa biết giữ tấm nào. Hãy thử một lần nhìn lại cùng Fotollection — tự tìm ảnh đẹp nhất, in ngày chụp và chuẩn bị sẵn để in. Tự động, miễn phí và hoàn toàn offline.
Phiên bản mới nhất: v0.4.0 · macOS 11+ (Apple Silicon và Intel) · Windows 10/11
Làm cho buổi tối sau chuyến đi, khi vài trăm tấm ảnh cần trở thành một xấp ảnh in nhỏ.
Dòng ngày LED màu cam của máy film ngày xưa, tên nơi chụp cùng dòng và một dòng chữ của bạn bên dưới. Đặt riêng từng ảnh hoặc cho tất cả.
Viền "Shot on" gọn gàng với logo hãng, ống kính, tiêu cự, khẩu độ, tốc độ và ISO, lấy thẳng từ EXIF.
Ảnh chụp liên tiếp và các khung hình gần giống nhau được gom nhóm; app gợi ý tấm nét nhất, ít rung, không nhắm mắt, kèm lý do.
Mỗi ảnh được cắt đúng khổ in, hiện DPI ngay khi kéo. Xoay ¼ vòng hoặc cân lại đường chân trời tới 15°.
Đủ độ phân giải, giữ hồ sơ màu, JPEG 4:4:4. Ảnh in ra giống ảnh bạn đã chụp.
Không tài khoản, không tải lên, không theo dõi. Tên địa điểm lấy từ bản đồ có sẵn trong app, GPS được xóa khi xuất.
Fotollection được làm để chạy hoàn toàn không cần internet. Không tải lên, không theo dõi, và bạn có thể tự kiểm tra từng dòng code.
Ảnh được đọc và ghi ngay trên ổ đĩa của bạn. Không có máy chủ nào để gửi ảnh tới.
Không cần đăng ký, và app không có analytics hay telemetry. App không bao giờ tự lên mạng, kể cả để kiểm tra cập nhật.
Tên nơi chụp lấy từ cơ sở dữ liệu bản đồ có sẵn trong app, nên GPS của bạn không đến tay bên thứ ba nào.
Ảnh xuất ra mặc định được xóa vị trí, nên ảnh gửi tiệm in không để lộ nơi bạn sống.
Code công khai theo giấy phép GPL-3.0. Ai cũng có thể đọc, tự build và kiểm chứng app làm đúng như trang này nói.
Dòng ngày LED màu cam của máy film ngày xưa, tên nơi chụp cùng dòng và một dòng chữ của bạn bên dưới. Đặt riêng từng ảnh hoặc cho tất cả.
Dấu ngày kèm tên nơi chụp từ GPS của ảnh
Viền "Shot on" gọn gàng với logo hãng, ống kính, tiêu cự, khẩu độ, tốc độ và ISO, lấy thẳng từ EXIF.
Khung "Shot on" với logo của hãng máy ảnh
Mỗi ảnh được cắt đúng khổ in, hiện DPI ngay khi kéo. Xoay ¼ vòng hoặc cân lại đường chân trời tới 15°.
Cân lại đường chân trời trong màn cắt ảnh
Ảnh chụp liên tiếp và các khung hình gần giống nhau được gom nhóm; app gợi ý tấm nét nhất, ít rung, không nhắm mắt, kèm lý do.
Ảnh giống nhau được gom nhóm, gợi ý tấm đẹp nhất
Dịch vụ in ảnh của dm và Rossmann đều do CEWE thực hiện. Fotollection có sẵn mọi khổ trong bảng giá của họ, nên khung cắt bạn thấy chính là ảnh máy in trả ra, không bị xén mép bất ngờ.
Tiêu chuẩn
Vuông
Dải dài
Giữ tỉ lệ gốc (không cắt) và mọi khổ tùy chỉnh, theo cm hoặc inch
Fotollection là dự án độc lập, không liên kết với CEWE, dm hay Rossmann; tên và logo là thương hiệu của chủ sở hữu, chỉ dùng để cho biết có thể in ảnh ở đâu. Khổ in được đối chiếu với bảng giá của dm vào tháng 10/2026.
Đo từng điểm ảnh trên ảnh thật, so với bản xuất của một trình sửa ảnh trên web thông thường.
Mọi con số đều đo trên ảnh thật, bằng một chiếc laptop bình thường (Apple M3, 16 GB); script đo nằm ngay trong repo.
Mọi thay đổi, mới nhất ở trên cùng (viết bằng tiếng Anh). "Unreleased" là những gì bản tiếp theo sẽ có.
Bản phát hành mới nhất: v0.4.0 · 2026-10-25
hoangphi01.github.io/fotollection/ links redirect to it.Noritsu logo (FR-040): the info frame shows the Noritsu logo for film scans whose EXIF make is “NORITSU KOKI” (EZ Controller), from a public-domain file on Wikimedia Commons like the other bundled logos (ADR-0020).
Share folder, apart from prints. The choice is remembered (settings v8).pyproject.toml and uv.lock pin their packages, and uv run runs them.ShutterSpeedValue), as some edited photos do.30mm F1.4 DC DN | Contemporary 016) no longer runs into the camera logo. The lens moves to its own line above the exposure settings, and a line that is still too long is set smaller.docs/DOCS_GUIDE.md, one checklist of what to update for each kind of change, including the website; CLAUDE.md and the docs index point to it.measure_folder --analyze measures it.[ and ] in the grid and the preview. Lossless, the crop turns with the photo, undoable, and kept in the project (project schema v4). Upside-down selfies are fixed in one key press.bench/quality/audit.py compares every exported pixel with the original. The export keeps the colour profile, full detail and saturation, with a mean ΔE2000 of 0.19, against a typical web-editor export that loses 87 % of the fine detail and 13 % of a P3 photo’s saturation. Shown in both READMEs and in RESULT §9.'25 09 21 DEBRECEN, offline; city, city + country code, or city + country), and type a line under the date that runs across the photo in plain capitals. The date sits a little higher, keeping the caption’s row free. The stamp’s font choice is gone (user fonts are for the info frame); settings move to v5..docx (FR-023): File → Save / Save As / Open / New (Cmd/Ctrl+S, Shift+Cmd/Ctrl+S, Cmd/Ctrl+O, Cmd/Ctrl+N), also in the sidebar. A .fotollection file carries the edits, print settings, info frame, camera profiles and the fonts and logos it uses, so it opens the same on another machine. Copying the project together with its photos keeps working; moved folders can be relinked. The window title shows unsaved changes, New and Open ask before discarding them, and double-clicking a .fotollection file opens it. The menu and title follow the interface language.10 × 13,3 cm).The info-frame controls (on/off, crop or fit, colour, date format, font, shown items) are now also in the preview, so the frame can be tuned without leaving it.
README.vi.md, the VI link at the top) and a reworked Performance section: four charts, each with a reference line (budget, 2 GB ceiling, browser) and a table under it. Charts are generated in English and Vietnamese by bench/chart.mjs; bench/batch.sh reproduces the 5,000-photo memory check.scripts/small-icons.py regenerates them.docs/RESULT.md: the latest measured speed and memory in one page, including a 5,035-photo batch (peak 1.47 GB, flat versus 95 photos). measure_folder gains --inflight N, --discard-output, per-phase RSS and a preview time breakdown.0–5, P, X and U in the grid or the preview, or click the stars and flags in the preview. Filter the library by flag and minimum rating; export writes exactly the filtered photos. Rejected photos are dimmed, never deleted, and every change is undoable.docs/EXTENSION.md: registry of Fotollection’s file types (project, preset, settings, fonts, logos, exports, inputs) with MIME types, UTIs, versions, limits and compatibility rules.bench/run.sh <photo-folder> measures export, preview and peak memory for the Rust core and for headless Chromium on the same photos, then draws docs/images/bench.svg for the README. Measured: export is a tie, the browser previews faster, and Rust uses 20% less memory and encodes 4:4:4.10 × 15 cm · 2:3, 4 × 6 in · 2:3).settings.json schema v2 with automatic migration from v1.settings.json, the first persisted file: render, frame and camera profiles, versioned and written atomically (DATABASE.md §6).YYYY-MM-DD/ folders, with progress and cancel, never overwriting files and never writing GPS.JpegCodec trait with pure-Rust codecs (ADR-0012), render plan, T0/T1 thumbnail cache, T2 preview LRU, bounded parallel export.task-progress event).library-changed, thumb-ready, export-progress, export-finished) and the fotothumb:// image protocol.fotollection-core + the Tauri 2 shell), and a React + Tailwind + shadcn/ui + Lucide UI shell (library sidebar, empty state, print-settings panel) with typed IPC through tauri-specta.cargo deny, npm audit and DOM-API security gates.scripts/bootstrap.sh / bootstrap.ps1, pinned Rust toolchain and Node version, committed lockfiles.LICENSE: GPL-3.0-only (ADR-0008). Distribution policy: unsigned builds with checksums (ADR-0009).docs/DEVELOPMENT.md and scripts/clean.sh, a tiered cleanup of build artifacts (sweep, release, full, deep).scripts/check-docs.sh).scripts/release.sh prepares a release commit; when it reaches main, CI builds the macOS (universal) and Windows installers and publishes them on GitHub Releases with checksums and first-launch steps. There is no in-app updater: the app stays fully offline and shows its version in the settings panel (FR-021)./vi/ (Vietnamese), with download buttons for the latest release, screenshots of the real app on CC0 demo photos, three benchmark charts, link previews, self-hosted fonts, and Google Analytics as the only third-party script (the website only; the app has none). Its colours come from the logo: a cream background, teal, wood and leaf green.docs/DATABASE.md: the single source of truth for persisted data, with a normalized (3NF) data model (integer keys, one fact in one place, sparse delta rows, no derived data on disk), columnar in-memory layout (~42 B per photo), project-file schema v1, migrations, atomic writes, the preset model, the thumbnail cache, and criteria for adopting SQLite..fotopreset sharing) and FR-039 (Photo Style looks modelled on Lumix GX9, including a built-in “C200 Natural”). ADR-0011 sets the scope boundary (global looks only).PLAN.md. Its content was split into docs/PRD.md, docs/ARCHITECTURE.md and docs/ROADMAP.md.Trial run of the release pipeline (macOS .dmg and Windows -setup.exe). Everything in it is released as 0.1.0.
Bộ cài chưa được ký bằng chứng chỉ trả phí, nên lần mở đầu tiên cần thêm một cú nhấp.
Mỗi bản phát hành có mã SHA-256 bên cạnh file tải về. App không tự cập nhật, nên không bao giờ tự lên mạng. Phiên bản mới được thông báo ở đây và trên GitHub.
Fotollection do một du học sinh Việt ở châu Âu làm trong thời gian rảnh, giữa giờ học và giờ làm thêm. App miễn phí và mã nguồn mở; nếu nó giúp bạn đỡ được một buổi tối ngồi lọc ảnh, một cốc cà phê (hay một bữa cơm sinh viên 😄) sẽ giúp mình tiếp tục làm.
Mã VietQR này chỉ dùng được với app ngân hàng tại Việt Nam (Napas 247). Cách ủng hộ từ nước ngoài sẽ có sau.