Skip to content

Releases: habinsong/negaflow

negaflow 1.0.5 — full-chroma JPEG, selectable PNG bit depth, film look for digital sources

Choose a tag to compare

@habinsong habinsong released this 03 Aug 11:28

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Free open-source macOS app that inverts colour and black-and-white film negatives, develops them, repairs dust and scratches, and prints. Camera scans and film scanners.

Website · Camera scanning guide · How to invert a film negative

Downloads

  • Most Macs: negaflow-1.0.5-1-macOS-universal.pkg
  • Apple Silicon only: negaflow-1.0.5-1-macOS-arm64.pkg
  • ZIP and DMG files for manual installation are provided as well.

Important: signing and notarization status

These artifacts are ad-hoc signed and are not notarized by Apple. macOS may block the first launch. Verify the download against the accompanying SHA256SUMS file, try to open it once, and allow it in System Settings → Privacy & Security → Open Anyway.

Updated August 3, 2026 at 10:45 UTC

Changes

  • JPEG is now encoded without chroma subsampling at 95% quality and above, and the default quality is 100%. Below that threshold the chosen value is kept, since a lower setting means asking for a smaller file. Colour resolution is no longer halved in the delivered file.
  • PNG bit depth is selectable, 8 or 16 bits per channel. Export defaults to 16-bit, Quick Export to 8-bit. Dithering is applied only at 8 bits.
  • Quick Export now has its own JPEG quality slider and PNG bit-depth control, placed between Size and Folder. It previously ignored the quality setting and always wrote at 95%.
  • Digital photographs marked as a digital source now run a separate film-look chain: camera rendering is undone, scatter and halation are added in linear light, and virtual development builds density through a characteristic curve, DIR couplers and RA-4 paper. Scan sources are untouched by this path.
  • Library browser, folder tree and canvas refinements.

Verified

  • The complete local strict-concurrency Swift suite passed: 1,868 tests, 20 skipped and 0 failures. Static CI also passed 84 script tests, boundary checks and provenance inspection of 1,259 files.
  • JPEG chroma subsampling was measured directly from the encoded SOF marker. Quality 100% and 95% encode as 4:4:4, quality 80% as 4:2:0. On a synthetic test pattern the previous default lost colour detail at an RMSE of 43.6 while luminance detail stayed at 0.30; the new default reduces the colour error to 0.58.
  • PNG output was decoded back and confirmed at the requested 8 or 16 bits per channel.
  • GitHub CI passed contracts, boundaries and provenance; the strict-concurrency Swift build and tests; and the GUI end-to-end test-bundle build: https://github.com/habinsong/negaflow/actions/runs/30807634413
  • arm64 and Universal ZIP, DMG, PKG and dSYM release builds passed, and SHA-256 verification passed for all 10 release assets.
  • The files remain ad-hoc signed and are not notarized. Real scanner optical, motor and USB behavior still requires device QA.

한국어

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

컬러·흑백 필름 네거티브를 반전하고 현상하며, 먼지와 스크래치를 복원하고 인화까지 하는 무료 오픈소스 macOS 앱. 카메라 스캔과 필름 스캐너를 모두 지원합니다.

웹사이트 · 카메라 스캔 가이드 · 네거티브 반전하는 법

다운로드

  • 대부분의 Mac: negaflow-1.0.5-1-macOS-universal.pkg
  • Apple Silicon 전용: negaflow-1.0.5-1-macOS-arm64.pkg
  • 수동 설치용 ZIP과 DMG도 함께 제공합니다.

중요: 서명 및 공증 상태

이 파일들은 ad-hoc 서명 상태이며 Apple 공증을 받지 않았습니다. macOS가 첫 실행을 막을 수 있습니다. 함께 제공되는 SHA256SUMS로 내려받은 파일을 확인하고, 한 번 열기를 시도한 다음 시스템 설정 → 개인정보 보호 및 보안 → 그래도 열기에서 허용하십시오.

2026년 8월 3일 19:45 KST 갱신

변경 사항

  • JPEG를 품질 95% 이상에서 크로마 서브샘플링 없이 인코딩하며 기본 품질을 100%로 올렸습니다. 그보다 낮은 설정은 고른 값을 그대로 씁니다 — 낮은 품질을 고른 의도는 파일을 줄이는 것이기 때문입니다. 내보낸 파일에서 색 해상도가 절반으로 줄지 않습니다.
  • PNG 비트 심도를 채널당 8bit와 16bit 중에서 고를 수 있습니다. 내보내기는 16bit, 빠른 내보내기는 8bit가 기본값이며 디더링은 8bit에서만 적용합니다.
  • 빠른 내보내기에 자체 JPEG 품질 슬라이더와 PNG 비트 심도 선택을 크기와 폴더 사이에 두었습니다. 이전에는 품질 설정이 반영되지 않고 항상 95%로 저장됐습니다.
  • 디지털 소스로 지정한 사진은 별도의 필름 룩 경로를 지납니다. 카메라의 표시 렌더링을 되돌리고, 선형 광량 상태에서 산란과 할레이션을 더한 뒤, 특성 곡선·DIR 커플러·RA-4 인화지로 밀도를 만듭니다. 스캔 원본은 이 경로를 지나지 않습니다.
  • 라이브러리 브라우저, 폴더 트리, 캔버스를 다듬었습니다.

검증

  • 로컬 strict-concurrency Swift 전체 테스트 1,868개가 통과했고 20개는 조건부 건너뜀, 실패는 0개였습니다. 정적 CI의 스크립트 테스트 84개, 경계 검사와 1,259개 파일 출처 검사도 통과했습니다.
  • JPEG 크로마 서브샘플링은 인코딩된 SOF 마커에서 직접 측정했습니다. 품질 100%와 95%는 4:4:4로, 80%는 4:2:0으로 인코딩됩니다. 합성 테스트 패턴에서 기존 기본값은 색 디테일을 RMSE 43.6으로 잃는 동안 휘도 디테일은 0.30에 머물렀고, 새 기본값은 색 오차를 0.58로 낮췄습니다.
  • PNG 출력은 다시 디코드해 요청한 채널당 8bit·16bit가 그대로 기록되는지 확인했습니다.
  • GitHub CI에서 계약·경계·출처 검사, strict-concurrency Swift 빌드와 테스트, GUI 종단 테스트 번들 빌드가 모두 통과했습니다: https://github.com/habinsong/negaflow/actions/runs/30807634413
  • arm64와 Universal의 ZIP, DMG, PKG, dSYM 릴리즈 빌드가 통과했고 릴리즈 파일 10개의 SHA-256 검증도 통과했습니다.
  • 파일은 계속 ad-hoc 서명·미공증 상태입니다. 실제 스캐너의 광학·모터·USB 동작은 실기기 QA가 필요합니다.

日本語

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

カラー・白黒フィルムネガの反転と現像、ホコリや傷の修復、プリントまで行う無料・オープンソースのmacOSアプリ。カメラスキャンとフィルムスキャナーに対応。

ウェブサイト · カメラスキャンのガイド · ネガを反転する方法

ダウンロード

  • ほとんどのMac:negaflow-1.0.5-1-macOS-universal.pkg
  • Apple Silicon専用:negaflow-1.0.5-1-macOS-arm64.pkg
  • 手動インストール用のZIPとDMGも用意しています。

重要:署名と公証の状態

これらのファイルはad-hoc署名で、Appleの公証を受けていません。macOSが初回起動をブロックする場合があります。同梱のSHA256SUMSでダウンロードを確認し、一度開いてから、システム設定 → プライバシーとセキュリティ → このまま開くで許可してください。

2026年8月3日 19:45 JST 更新

変更点

  • JPEGを品質95%以上でクロマサブサンプリングなしに符号化し、既定の品質を100%に引き上げました。それより低い設定は選んだ値をそのまま使います。低い品質を選ぶ意図はファイルを小さくすることだからです。書き出したファイルで色の解像度が半分になることはなくなりました。
  • PNGのビット深度をチャンネルあたり8bitと16bitから選べます。書き出しは16bit、クイック書き出しは8bitが既定で、ディザリングは8bitのときだけ適用します。
  • クイック書き出しに、独自のJPEG品質スライダーとPNGビット深度の選択を、サイズとフォルダーの間に追加しました。以前は品質設定が反映されず、常に95%で保存されていました。
  • デジタルソースとして指定した写真は、別のフィルムルック経路を通ります。カメラの表示レンダリングを元に戻し、リニア光の状態で散乱とハレーションを加えたうえで、特性曲線・DIRカプラー・RA-4印画紙で濃度を作ります。スキャン原稿はこの経路を通りません。
  • ライブラリブラウザー、フォルダーツリー、キャンバスを調整しました。

検証

  • ローカルのstrict-concurrency Swift全1,868テストが成功し、20件は条件付きスキップ、失敗は0件でした。静的CIの84スクリプトテスト、境界検査、1,259ファイルの由来検査も成功しました。
  • JPEGのクロマサブサンプリングは、符号化されたSOFマーカーから直接測定しました。品質100%と95%は4:4:4、80%は4:2:0で符号化されます。合成テストパターンでは、従来の既定値が色のディテールをRMSE 43.6で失う一方、輝度のディテールは0.30にとどまりました。新しい既定値では色の誤差が0.58まで下がります。
  • PNG出力は再度デコードし、指定したチャンネルあたり8bit・16bitがそのまま記録されることを確認しました。
  • GitHub CIで、契約・境界・由来の検査、strict-concurrency Swiftビルドとテスト、GUIエンドツーエンドテストバンドルのビルドがすべて成功しました:https://github.com/habinsong/negaflow/actions/runs/30807634413
  • arm64とUniversalのZIP、DMG、PKG、dSYMリリースビルドが成功し、10個のリリースファイルのSHA-256検証も成功しました。
  • ファイルは引き続きad-hoc署名・未公証です。実スキャナーの光学、モーター、USB動作には実機QAが必要です。

简体中文

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

免费开源的 macOS 应用:反转彩色与黑白胶片负片、显影调色、修复灰尘与划痕并输出打印,支持相机翻拍与胶片扫描仪。

网站 · 相机翻拍指南 · 如何反转负片

下载

  • 大多数Mac:negaflow-1.0.5-1-macOS-universal.pkg
  • 仅Apple Silicon:negaflow-1.0.5-1-macOS-arm64.pkg
  • 同时提供用于手动安装的ZIP和DMG文件。

重要:签名与公证状态

这些文件使用ad-hoc签名,未经Apple公证。macOS可能会阻止首次启动。请使用随附的SHA256SUMS核对下载文件,先尝试打开一次,再前往系统设置 → 隐私与安全性 → 仍要打开进行允许。

2026年8月3日 18:45 CST 更新

变更

  • JPEG 在质量 95% 及以上时不再做色度子采样,默认质量提升为 100%。低于该阈值时沿用所选数值,因为选择它们本身就是为了更小的文件。导出文件中的色彩分辨率不会再减半。
  • PNG 位深度可选,每通道 8 位或 16 位。导出默认 16 位,快速导出默认 8 位;仅在 8 位时应用抖动。
  • 快速导出新增独立的 JPEG 质量滑块与 PNG 位深度选择,位于尺寸与文件夹之间。此前质量设置不生效,始终以 95% 写出。
  • 标记为数字来源的照片会走单独的胶片外观流程:先撤销相机的显示渲染,在线性光下加入散射与光晕,再通过特性曲线、DIR 成色剂和 RA-4 相纸构建密度。扫描原稿不进入该流程。
  • 图库浏览器、文件夹树与画布细节优化。

验证

  • 本地完整strict-concurrency Swift测试共1,868项通过,20项按条件跳过,0项失败。静态CI的84项脚本测试、边界检查和1,259个文件的来源检查也已通过。
  • JPEG 色度子采样直接从编码后的 SOF 标记读取测量。质量 100% 与 95% 编码为 4:4:4,80% 为 4:2:0。在合成测试图上,旧默认值丢失色彩细节的 RMSE 为 43.6,而亮度细节仅为 0.30;新默认值把色彩误差降至 0.58。
  • PNG 输出经过回读解码,确认按请求写入每通道 8 位或 16 位。
  • GitHub CI的契约、边界与来源检查,strict-concurrency Swift构建与测试,以及GUI端到端测试包构建全部通过:https://github.com/habinsong/negaflow/actions/runs/30807634413
  • arm64与Universal的ZIP、DMG、PKG和dSYM发布构建通过,10个发布文件的SHA-256校验也已通过。
  • 文件仍为ad-hoc签名且未经公证。真实扫描仪的光学、马达与USB行为仍需实机QA。

Français

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Application macOS libre et open source pour inverser les négatifs couleur et noir et blanc, les développer, réparer poussières et rayures, puis tirer. Appareil photo ou scanner.

Site web · Guide de numérisation à l'appareil · Comment inverser un négatif

Téléchargements

  • La plupart des Mac : negaflow-1.0.5-1-macOS-universal.pkg
  • Apple Silicon uniquement : negaflow-1.0.5-1-macOS-arm64.pkg
  • Des fichiers ZIP et DMG sont également fournis pour l’installation manuelle.

Important : signature et notarisation

Ces fichiers sont signés en ad-hoc et ne sont pas notarisés par Apple. Si macOS bloque le premier lancement, vérifiez le téléchargement avec le fichier SHA256SUMS, tentez de l’ouvrir une fois, puis autorisez-le dans Réglages Système → Confidentialité et sécurité → Ouvrir quand même.

Mis à jour le 3 août 2026 à 12:45 CEST

Modificatio...

Read more

negaflow 1.0.4 — seven print layouts, batch develop progress, ~10x faster export

Choose a tag to compare

@habinsong habinsong released this 31 Jul 05:20

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Free open-source macOS app that inverts colour and black-and-white film negatives, develops them, repairs dust and scratches, and prints. Camera scans and film scanners.

Website · Camera scanning guide · How to invert a film negative

Downloads

  • Most Macs: negaflow-1.0.4-1-macOS-universal.pkg
  • Apple Silicon only: negaflow-1.0.4-1-macOS-arm64.pkg
  • ZIP and DMG files for manual installation are provided as well.

Important: signing and notarization status

These artifacts are ad-hoc signed and are not notarized by Apple. macOS may block the first launch. Verify the download against the accompanying SHA256SUMS file, try to open it once, and allow it in System Settings → Privacy & Security → Open Anyway.

Updated July 31, 2026 at 05:19 UTC

Changes

  • Import now reports progress and leaves automatic development off by default. A folder can apply its process and target to every photo, including already developed photos, with visible batch progress.
  • Expanded and collapsed folders persist across launches. Photos can move between folders without overwriting a same-named file, and Finder moves and renames update only the affected library folder.
  • Develop copy/paste and user presets now carry process, target, film-base choices, adjustments, crop, rotation, flips and straightening. Pasting applies to the entire selection.
  • Print now has seven layouts: single image, contact sheet, picture package, custom package, cyanotype, glass plate and gelatin silver. Multi-selection individual layouts appear as a vertical stack of finished pages.
  • Every Print layout now provides the same Sheet Color choices (black, gray and white) and Surface choices (matte, glossy, lustre and silk). Sheet Color defaults to white except Contact Sheet, which defaults to black; Surface defaults to matte and is placed directly below Sheet Color.
  • Print provides 27 paper sizes covering photographic inch sizes, Letter, Tabloid, A3+, A1–A6 and B1–B6. An optional top-and-left page ruler can be enabled below Margin and switched between inches and centimetres.
  • Print Export and Quick Export now plan finished pages instead of rendering one preview per selected source. Progress is shown with the finished-page count, a linear progress bar and an explicit percentage.
  • Print preview and export share the same page composition. Preview reuse, bounded source preparation, one connected Core Image graph and a 512 MiB page-raster budget remove the per-photo preview/settling loop from export.
  • Picture Package and Custom Package previews now prefer the highest-resolution available positive image and create a bounded display-size preview only when the 360 px thumbnail is insufficient. These utility-priority preview jobs are cancelled before Export or Quick Export, so sharper large cells do not compete with full-page output rendering.
  • Develop Export and Quick Export now decode full-resolution TIFF sources only once and reuse one Core Image render context. Quick Export develops only the pixels required by the requested output while preserving the selected dimensions, format, DPI, JPEG quality and ICC profile; full-resolution, Raw TIFF, Main Flat and sidecar exports remain on the original-resolution path.
  • Printer ICC conversion is applied to the complete composed page, including repeated placements and mixed-photo packages. C-print settings remain confined to Print, while paper Surface is now shared consistently by every layout.
  • The localized About window places the bold Niépce bicentennial message between “negaflow” and version 1.0.4.

Verified

  • The complete local strict-concurrency Swift suite passed: 1,830 tests, 20 skipped and 0 failures. Static CI also passed 84 script tests, boundary checks and provenance inspection of 1249 files.
  • On the same real photos, Develop Quick Export dropped from 13.320 s to 1.327 s (about 10× faster), and a slow full-resolution Develop Export dropped from 23.045 s to 10.987 s. A Release stress run completed Develop Export, Develop Quick Export, Print Export and Print Quick Export for 300 virtual photos each—1,200 outputs total—with 0 failures while preserving 1200 × 800 Develop and 1800 × 1200 300 dpi Print dimensions.
  • The opt-in 39-source Print benchmark passed: the 6 × 7 contact sheet produced one file in 1.198 s; the 39-file single-image batch completed in 5.205 s; cyanotype, glass plate and gelatin silver Export and Quick Export completed in 5.430–7.230 s on the test Mac.
  • Runtime export tests confirmed 39-source page planning for Contact Sheet (1 page), Single Image (39), Picture Package (10) and Custom Package (1), together with package progress reporting.
  • All seven Print layouts, shared Sheet Color and Surface controls, paper sizes and both ruler units were checked in the Release app with 49 photos from the working library. Picture Package and Custom Package were also checked for adaptive preview promotion using actual bitmap-pixel sizing; Picture Package Quick Export produced 17 JPEG page files from 49 photos in about 9.6 s.
  • GitHub CI passed contracts, boundaries and provenance; the strict-concurrency Swift build and tests; and the GUI end-to-end test-bundle build: https://github.com/habinsong/negaflow/actions/runs/30605733608
  • arm64 and Universal ZIP, DMG, PKG and dSYM release builds passed. SHA-256 verification passed for all 10 release assets, both DMGs verified, and each executable matches its dSYM UUID.
  • The files remain ad-hoc signed and are not notarized. Real scanner optical, motor and USB behavior still requires device QA.

한국어

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

컬러·흑백 필름 네거티브를 반전하고 현상하며, 먼지와 스크래치를 복원하고 인화까지 하는 무료 오픈소스 macOS 앱. 카메라 스캔과 필름 스캐너를 모두 지원합니다.

웹사이트 · 카메라 스캔 가이드 · 네거티브 반전하는 법

다운로드

  • 대부분의 Mac: negaflow-1.0.4-1-macOS-universal.pkg
  • Apple Silicon 전용: negaflow-1.0.4-1-macOS-arm64.pkg
  • 수동 설치용 ZIP과 DMG도 함께 제공합니다.

중요: 서명 및 공증 상태

이 파일들은 ad-hoc 서명 상태이며 Apple 공증을 받지 않았습니다. macOS가 첫 실행을 막을 수 있습니다. 함께 제공되는 SHA256SUMS로 내려받은 파일을 확인하고, 한 번 열기를 시도한 다음 시스템 설정 → 개인정보 보호 및 보안 → 그래도 열기에서 허용하십시오.

2026년 7월 31일 14:19 KST 갱신

변경 사항

  • 가져오기 진행 상황을 표시하고 자동 현상은 기본적으로 끈 상태를 유지합니다. 폴더별 프로세스와 대상을 이미 현상된 사진을 포함한 전체 사진에 적용하며 배치 진행 상황을 보여줍니다.
  • 폴더의 펼침과 접힘 상태가 재실행 후에도 유지됩니다. 같은 이름의 파일을 덮어쓰지 않고 사진을 폴더 사이에서 옮길 수 있으며, Finder에서 이동하거나 이름을 바꾸면 해당 폴더만 다시 동기화합니다.
  • 현상 설정 복사/붙여넣기와 사용자 프리셋에 프로세스, 대상, 필름 베이스, 조정, 자르기, 회전, 뒤집기, 수평 맞추기가 포함됩니다. 붙여넣기는 선택된 사진 전체에 적용됩니다.
  • 인화에 단일 이미지, 콘택트 시트, 사진 패키지, 사용자 패키지, 시아노타입, 유리건판, 젤라틴 실버의 7개 레이아웃을 제공합니다. 여러 사진을 선택한 개별 이미지 레이아웃은 완성된 페이지를 세로로 이어 보여줍니다.
  • 모든 인화 레이아웃에서 시트 색상(검정·회색·흰색)과 표면(무광·유광·러스터·실크)을 동일하게 제공합니다. 시트 색상은 콘택트 시트만 검정, 나머지는 흰색이 기본값이며 표면은 무광이 기본값입니다. 표면은 시트 색상 바로 아래에 배치했습니다.
  • 사진 인치 규격, Letter, Tabloid, A3+, A1–A6, B1–B6을 포함한 용지 크기 27종을 제공합니다. 여백 아래에서 페이지 상단·왼쪽 눈금자를 켤 수 있으며 in/cm 단위를 선택할 수 있습니다.
  • 인화 내보내기와 빠른 내보내기는 선택된 사진마다 프리뷰를 만드는 대신 완성 페이지를 계획합니다. 완성 페이지 수, 선형 진행 막대와 명확한 퍼센트로 진행 상황을 표시합니다.
  • 인화 프리뷰와 내보내기가 같은 페이지 합성을 사용합니다. 프리뷰 재사용, 제한된 원본 준비, 하나로 연결된 Core Image 그래프, 페이지당 512 MiB 래스터 예산으로 사진별 프리뷰·정착 반복을 제거했습니다.
  • 사진 패키지와 사용자 패키지 프리뷰는 사용 가능한 발색 이미지 중 실제 픽셀 해상도가 가장 높은 이미지를 우선하며, 360 px 썸네일이 표시 크기에 부족할 때만 제한된 표시용 프리뷰를 만듭니다. 이 낮은 우선순위 작업은 내보내기와 빠른 내보내기 직전에 취소되므로 큰 셀의 선명도를 높여도 완성 페이지 출력 렌더링과 경쟁하지 않습니다.
  • 현상 내보내기와 빠른 내보내기는 풀해상도 TIFF 원본을 한 번만 디코드하고 하나의 Core Image 렌더 컨텍스트를 재사용합니다. 빠른 내보내기는 선택한 크기·포맷·DPI·JPEG 품질·ICC 프로파일을 그대로 유지하면서 최종 출력에 필요한 픽셀만 현상하며, 전체 해상도·Raw TIFF·Main Flat·사이드카 내보내기는 원본 해상도 경로를 유지합니다.
  • 프린터 ICC 변환은 반복 배치와 여러 사진이 섞인 패키지를 포함한 완성 페이지 전체에 적용됩니다. C-print 설정은 인화 안에서만 동작하며, 용지 표면은 모든 레이아웃에서 일관되게 공유합니다.
  • 다국어 ‘negaflow에 관하여’ 창에서 굵게 표시한 니엡스 사진 200주년 문장을 “negaflow”와 버전 1.0.4 사이에 배치했습니다.

검증

  • 로컬 strict-concurrency Swift 전체 테스트 1,830개가 통과했고 20개는 조건부 건너뜀, 실패는 0개였습니다. 정적 CI의 스크립트 테스트 84개, 경계 검사와 1249개 파일 출처 검사도 통과했습니다.
  • 같은 실제 사진에서 현상 빠른 내보내기는 13.320초에서 1.327초로 약 10배 빨라졌고, 느린 풀해상도 현상 내보내기는 23.045초에서 10.987초로 줄었습니다. Release 스트레스 테스트는 가상 사진 300장에 대해 현상 내보내기·현상 빠른 내보내기·인화 내보내기·인화 빠른 내보내기를 각각 완료해 총 1,200개 산출물을 실패 0건으로 만들었으며, 현상 1200 × 800과 인화 1800 × 1200 300 dpi 치수를 유지했습니다.
  • 39개 원본을 사용한 선택형 인화 성능 테스트가 통과했습니다. 6 × 7 콘택트 시트는 파일 1개를 1.198초에 만들었고 단일 이미지 39개 배치는 5.205초에 완료됐으며, 시아노타입·유리건판·젤라틴 실버의 내보내기와 빠른 내보내기는 테스트 Mac에서 5.430–7.230초에 완료됐습니다.
  • 런타임 내보내기 테스트에서 39개 원본 기준 콘택트 시트 1페이지, 단일 이미지 39페이지, 사진 패키지 10페이지, 사용자 패키지 1페이지 계획과 패키지 진행률 표시를 확인했습니다.
  • 작업 중이던 사진 49장을 Release 앱에서 사용해 인화 레이아웃 7개, 공통 시트 색상·표면, 용지 크기와 두 눈금자 단위를 확인했습니다. 사진 패키지와 사용자 패키지는 실제 비트맵 픽셀 기준의 적응형 프리뷰 승격까지 확인했으며, 사진 패키지 빠른 내보내기는 약 9.6초에 JPEG 페이지 파일 17개를 만들었습니다.
  • GitHub CI에서 계약·경계·출처 검사, strict-concurrency Swift 빌드와 테스트, GUI 종단 테스트 번들 빌드가 모두 통과했습니다: https://github.com/habinsong/negaflow/actions/runs/30605733608
  • arm64와 Universal의 ZIP, DMG, PKG, dSYM 릴리즈 빌드가 통과했습니다. 릴리즈 파일 10개의 SHA-256, DMG 2개의 유효성, 실행 파일과 dSYM UUID 일치를 확인했습니다.
  • 파일은 계속 ad-hoc 서명·미공증 상태입니다. 실제 스캐너의 광학·모터·USB 동작은 실기기 QA가 필요합니다.

日本語

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

カラー・白黒フィルムネガの反転と現像、ホコリや傷の修復、プリントまで行う無料・オープンソースのmacOSアプリ。カメラスキャンとフィルムスキャナーに対応。

ウェブサイト · カメラスキャンのガイド · ネガを反転する方法

ダウンロード

  • ほとんどのMac:...
Read more

negaflow 1.0.3

Choose a tag to compare

@habinsong habinsong released this 29 Jul 12:54

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Downloads

  • Most Macs: negaflow-1.0.3-1-macOS-universal.pkg
  • Apple Silicon only: negaflow-1.0.3-1-macOS-arm64.pkg
  • ZIP and DMG files for manual installation are provided as well.

Important: signing and notarization status

These artifacts are ad-hoc signed and are not notarized by Apple. macOS may block the first launch. Verify the download against the accompanying SHA256SUMS file, try to open it once, and allow it in System Settings → Privacy & Security → Open Anyway.

Updated July 29, 2026 at 12:53 UTC

Changes

  • A roll now carries the shooting record. Camera, lens, film, ISO, shutter, aperture and focal length are written once on the roll and applied to its frames, filling only the fields a frame leaves empty, so a lens swapped in the middle of a roll stays as that frame records it. The roll also carries the code written on the negative sleeve and a note of its own.
  • The camera, lens and film written by hand are searched with the same standing as the EXIF of an imported file. A film camera writes no EXIF at all, so what is written down is that frame's camera, and a frame that carries a record no longer reports its camera and lens as unknown.
  • Exported file names can use the roll code, the film and the camera, so a file carries the same code as the sleeve it came from. Quick export gains a long-edge size next to the folder it already had.
  • The film base is measured as a ratio of the pixel's own level. The test for a candidate compared channels with fixed differences — R−B of at least 0.06 for an orange mask, a spread within ±0.08 for a neutral one — while the samples are read in linear light, where dye transmission is multiplicative. A scan that lands low in the value domain, which is what a scanner raw at gamma 1.0 is, lost every candidate below roughly 0.30 in sRGB terms, and the develop fell back to a constant base: the inversion came out wrong rather than merely uncertain. The same scan now holds down to 0.03. A candidate must also reach a tenth of that scan's own base level, so an orange scene, which keeps the mask ratio at any density, cannot pass as film base.
  • An original that iCloud Drive has taken back off the disk is downloaded before the export starts, and the number still on the way is reported while it runs. Opening such a file blocks the thread until the download finishes, so an export used to look frozen on one frame for tens of seconds with nothing on screen to explain it. An export that cannot get its originals now stops with that reason instead of stalling.
  • An export no longer decodes the same cleaned raw twice. Confirming that the cached cleaned raw was usable read the whole TIFF and threw the result away, so an export that waited for that check then decoded the same file again from the start.
  • Export verification has a standard and a strict level. Both write the real SHA-256 into the journal, so crash recovery and rollback are decided exactly as before; what changes is how many times the same file is hashed again inside one successful export. Standard fixes the generation with the first hash and rechecks with the stat identity, falling back to a full hash the moment anything about the file differs. Strict rehashes at every checkpoint, which is what every export did up to 1.0.2.
  • A frame proposed on a flatbed preview follows the way the film lies on the glass. Format dimensions are written for a strip lying across, so on a bed taller than it is wide every proposed frame came out rotated by ninety degrees and had to be redrawn by hand. The frame now advances along the long axis of the scan area, a frame added after the first one copies its size and direction and lands in the next slot two millimetres on, and the size is measured against the area the preview actually scanned rather than against the whole bed.
  • A frame drawn or resized by hand snaps to the aspect of the selected film format, measured in millimetres rather than screen pixels, because nothing on screen tells you whether a rectangle is 6×7. The orientation follows the shape being drawn, dragging one edge drives the other axis around the unchanged centre, and holding Option draws freely for a format the list does not carry. Adding and removing a frame are in the Scanner menu with shortcuts.
  • The divider of a before/after comparison is dragged. Left/right and top/bottom each keep their own position as a fraction of the image, so zooming or resizing the window does not move it, and VoiceOver moves the line in steps. The line follows the hand from wherever it was taken hold of instead of snapping under the pointer, a click that does not move leaves it where it is, and the resize cursor is now an AppKit cursor rect — it can no longer stay on screen after the pointer has left the line, which read as the app having stopped responding to clicks.
  • Two-finger scrolling pans the canvas. Dragging inside the canvas belongs to the tools — drawing a scan frame, cropping, brushing — so with a tool on there was no way left to move a zoomed image.
  • The scan progress card is an opaque card instead of glass. What it reports has to stay readable over any photograph.

Verified

  • Full strict-concurrency suite passes: 1,720 tests, 17 conditionally skipped. The GitHub CI quality gate passes with it: contracts, provenance, boundary checks and the GUI test build
  • The GUI end-to-end suite passes on CI. An export commit journal used to be written outside the temporary root a GUI test owns, so an export cut short by one test blocked the library of the next launch with the recovery screen; the journal now lives inside that root, and the run is green again
  • The film base measurement is covered by tests across the exposure range: an orange mask, a neutral base and the weak-strip fallback, each measured on synthetic negatives down to where the estimate is expected to give up
  • The flatbed frame placement and the aspect lock are covered by unit tests that measure in millimetres: the long axis, the next slot, the row wrap at the end of a strip, sizing against the preview area, and the snap with its anchors
  • The roll record is covered by tests: filling only empty fields, a frame joining a roll, a catalog round trip, the search by camera, lens and film, and the roll code in a file name
  • Both export verification levels are covered by tests, including a source replaced before the commit, an in-place rewrite of the same length, and the fall back to a full hash when the stat identity differs
  • The iCloud path is covered by tests for eviction detection, deduplication and progress
  • arm64 and Universal ZIP, DMG, PKG and dSYM release builds pass
  • Local SHA-256 verification of all 10 release assets passes
  • The divider drag and scroll panning were not exercised by hand in a running app; they are interaction changes without automated coverage
  • Real scanner optical, motor and USB behavior still requires device QA

한국어

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

다운로드

  • 대부분의 Mac: negaflow-1.0.3-1-macOS-universal.pkg
  • Apple Silicon 전용: negaflow-1.0.3-1-macOS-arm64.pkg
  • 수동 설치용 ZIP과 DMG도 함께 제공합니다.

중요: 서명 및 공증 상태

이 배포 파일은 ad-hoc 서명되었으며 Apple 공증을 받지 않았습니다. macOS가 최초 실행을 차단할 수 있습니다. 다운로드한 파일을 함께 제공된 SHA256SUMS와 대조한 뒤 한 번 열기를 시도하고, 시스템 설정 → 개인정보 보호 및 보안 → 그래도 열기에서 직접 허용하십시오.

2026년 7월 29일 21:53 KST 갱신

변경 사항

  • 촬영 기록을 롤에 적습니다. 카메라, 렌즈, 필름, ISO, 셔터, 조리개, 초점 거리를 롤에 한 번 적고 그 롤의 프레임에 적용하면 프레임이 비워 둔 칸만 채웁니다. 롤 중간에 렌즈를 바꿔 적어 둔 프레임은 적힌 그대로 남습니다. 롤에는 네거티브 봉투에 적는 코드와 메모도 함께 둡니다.
  • 손으로 적은 카메라·렌즈·필름은 가져온 파일의 EXIF와 같은 자격으로 검색됩니다. 필름 카메라는 EXIF를 남기지 않으므로 적어 둔 값이 곧 그 프레임의 카메라이며, 기록이 있는 프레임은 카메라·렌즈를 더 이상 미상으로 보고하지 않습니다.
  • 내보내는 파일 이름에 롤 코드, 필름, 카메라를 쓸 수 있습니다. 봉투에 적은 코드가 파일 이름에 그대로 남습니다. 빠른 내보내기에는 기존 폴더 설정 옆에 긴 변 크기가 생겼습니다.
  • 필름 베이스를 그 픽셀 자신의 밝기에 대한 비율로 잽니다. 후보 판정은 채널 차이를 고정값으로 비교했습니다 — 오렌지 마스크는 R−B 0.06 이상, 무채색 베이스는 채널 폭 ±0.08 이내 — 그런데 표본은 선형 광에서 읽고, 색소 투과는 곱셈입니다. 값 영역에서 낮게 내려앉는 스캔, 즉 감마 1.0의 스캐너 raw가 그러한데, sRGB로 0.30 언저리 아래에서는 후보가 하나도 남지 않았고 현상은 상수 베이스로 물러났습니다 — 반전이 불확실해지는 게 아니라 틀리게 나왔습니다. 같은 스캔이 이제 0.03까지 버팁니다. 후보는 그 스캔 자신의 베이스 밝기의 10분의 1도 넘어야 하므로, 밀도와 무관하게 마스크 비율을 유지하는 오렌지 장면이 필름 베이스로 통과하지 못합니다.
  • iCloud Drive가 로컬에서 내려 둔 원본은 내보내기를 시작하기 전에 먼저 받아두고, 진행 중에는 남은 개수를 표시합니다. 그런 파일은 여는 순간 다운로드가 끝날 때까지 스레드가 막혀, 지금까지는 특정 프레임에서 아무 설명 없이 수십 초 멈춘 것처럼 보였습니다. 원본을 받지 못하면 그 이유와 함께 중단합니다.
  • 내보내기가 같은 cleaned raw를 두 번 디코드하지 않습니다. 캐시된 cleaned raw가 쓸 수 있는지 확인하면서 TIFF 전체를 읽고는 결과를 버렸기 때문에, 그 확인을 기다린 내보내기가 같은 파일을 처음부터 다시 디코드했습니다.
  • 내보내기 검증에 표준과 엄격 두 수준이 생겼습니다. 두 수준 모두 저널에는 실제 SHA-256을 기록하므로 크래시 복구와 롤백 판정은 전과 같습니다. 달라지는 것은 한 번의 성공적인 내보내기 안에서 같은 파일을 몇 번 다시 해시하느냐뿐입니다. 표준은 최초 해시로 세대를 고정하고 이후에는 stat identity로 재확인하며, 하나라도 다르면 그 자리에서 전체 해시로 되돌아가 판정합니다. 엄격은 모든 확인 지점에서 전체 바이트를 다시 해시합니다 — 1.0.2까지의 동작입니다.
  • 평판 프리뷰에서 제안하는 프레임이 유리면에 놓인 필름 방향을 따릅니다. 규격 치수는 스트립을 가로로 놓았을 때 기준이라, 세로로 긴 유리면에서는 제안된 프레임이 항상 90° 틀어져 직접 그려야 했습니다. 이제 프레임은 스캔 영역의 긴 축을 따라 진행하고, 첫 프레임 다음에 추가하는 프레임은 그 크기와 방향을 이어받아 2mm 간격으로 다음 칸에 놓이며, 크기는 전체 유리면이 아니라 프리뷰로 실제 훑은 영역을 기준으로 계산합니다.
  • 손으로 그리거나 크기를 조정한 프레임은 선택한 필름 규격의 비율로 맞춰집니다. 화면 픽셀이 아니라 밀리미터로 따집니다 — 화면만 봐서는 그 사각형이 6×7인지 알 수 없기 때문입니다. 방향은 그리는 형태를 따르고, 한 변을 끌면 반대 축이 중심을 지키며 따라오며, ⌥를 누르고 그리면 목록에 없는 규격을 위해 자유 비율로 그립니다. 프레임 추가와 제거는 스캐너 메뉴에 단축키와 함께 있습니다.
  • 원본/현상본 비교의 분할선을 끌어서 옮깁니다. 좌/우와 상/하가 각자의 위치를 이미지 기준 비율로 기억하므로 확대하거나 창 크기를 바꿔도 그대로이고, VoiceOver에서는 단계적으로 움직입니다. 선은 포인터 밑으로 튀지 않고 잡은 지점 그대로 손을 따라오며, 움직이지 않은 클릭은 선을 그 자리에 둡니다. 리사이즈 커서는 AppKit의 cursor rect가 되어, 포인터가 선을 벗어난 뒤에도 화면에 남아 앱이 클릭을 받지 않는 것처럼 보이는 일이 없습니다.
  • 두 손가락 스크롤로 캔버스를 이동합니다. 캔버스 안의 드래그는 프레임 그리기·크롭·브러시 같은 도구가 쓰기 때문에, 도구를 켜면 확대한 이미지를 옮길 방법이 없었습니다.
  • 스캔 진행률 카드는 유리 대신 불투명한 카드입니다. 거기 적히는 내용은 어떤 사진 위에서도 읽혀야 합니다.

검증

  • 전체 strict-concurrency 스위트 통과: 1,720개, 조건부 건너뜀 17개. 같은 내용의 GitHub CI 품질 게이트...
Read more

negaflow 1.0.2

Choose a tag to compare

@habinsong habinsong released this 28 Jul 17:31

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Downloads

  • Most Macs: negaflow-1.0.2-1-macOS-universal.pkg
  • Apple Silicon only: negaflow-1.0.2-1-macOS-arm64.pkg
  • ZIP and DMG files for manual installation are provided as well.

Important: signing and notarization status

These artifacts are ad-hoc signed and are not notarized by Apple. macOS may block the first launch. Verify the download against the accompanying SHA256SUMS file, try to open it once, and allow it in System Settings → Privacy & Security → Open Anyway.

Updated July 28, 2026 at 17:30 UTC

Changes

  • An imported TIFF with 16-bit samples and no embedded ICC profile is now read as the linear scanner raw it is. Scanner software writes exactly this file: SilverFast marks its 48-bit output Gamma=1 and HDRScan=Yes and embeds no profile, VueScan raw does the same, and the scanner plug-in passes the backend's linear TIFF through untouched. Reading those linear values as gamma encoded collapsed the value domain, so the film base measurement found no confident Dmin and the inversion produced a pale, flat frame that auto tone and auto white balance could not rescue. Measured on one such file, the result went from piling up at p1=0.675 with no measured base to spanning p1=0.012 through p99=0.847 with a base of 0.236/0.135/0.072. A scan produced by the plug-in itself failed in the same way once it was imported rather than scanned, which is what showed the fault was in the decode path and not in the file.
  • The preview scan now asks for 16 bits when the scanner reports them. A preview runs through the same develop path as a frame, so a backend that returns linear raw at 8 bits — an Epson driven at neutral raw colour and linear gamma, for instance — rendered a white, washed-out preview, and the flatbed preview is also the surface frame detection works on.
  • A frame can now carry the shooting record a film camera never writes. Camera, lens, film, ISO, shutter, aperture and focal length are written down beside the title and copyright, and they are embedded in the EXIF of the exported file, so other applications read the frame the way they read a digital photograph. The record lives in the catalog only; the original file is never modified.
  • A recorded shooting camera takes precedence over the scanner in EXIF Make and Model, because that is the device the photograph was taken with. The scanner identity stays in the sidecar. The film name has no standard EXIF tag, so it goes to UserComment beside the development process, and it is left out when the export policy asks for minimal metadata.
  • Integer EXIF lists such as ISOSpeedRatings were written as decimals and ImageIO discarded the whole tag, so an ISO never survived an export — including one that was already present in an imported file. Such lists are written as integers now.
  • The Film tab was rebuilt. Slide and color negative films are separate cards, and the selected film is cleared by clicking it once more, so the None row is gone. The intensity slider fills the card instead of being pushed into the column the form reserves for a control label.

Verified

  • Full strict-concurrency suite passes: 1,676 tests, 15 conditionally skipped
  • GUI test build passes
  • The washed-out import was reproduced and measured on both a scanner-software file and a plug-in scan; after the fix both develop identically to the scan path, and an 8-bit or profiled file is unaffected
  • An exported file was read back: camera, lens, ISO, shutter, aperture, focal length and film name arrive in EXIF, the scanner identity is kept when no shooting camera is recorded, and the minimal metadata policy keeps the record out of the file
  • A catalog written before this version still opens, and a shooting record survives a catalog round trip
  • The rebuilt Film tab was checked in the running app
  • arm64 and Universal ZIP, DMG, PKG and dSYM release builds pass
  • Local SHA-256 verification of all 10 release assets passes
  • Real scanner optical, motor and USB behavior still requires device QA

한국어

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

다운로드

  • 대부분의 Mac: negaflow-1.0.2-1-macOS-universal.pkg
  • Apple Silicon 전용: negaflow-1.0.2-1-macOS-arm64.pkg
  • 수동 설치용 ZIP과 DMG도 함께 제공합니다.

중요: 서명 및 공증 상태

이 배포 파일은 ad-hoc 서명되었으며 Apple 공증을 받지 않았습니다. macOS가 최초 실행을 차단할 수 있습니다. 다운로드한 파일을 함께 제공된 SHA256SUMS와 대조한 뒤 한 번 열기를 시도하고, 시스템 설정 → 개인정보 보호 및 보안 → 그래도 열기에서 직접 허용하십시오.

2026년 7월 29일 02:30 KST 갱신

변경 사항

  • 프로필이 없는 16bit TIFF를 가져오면 이제 선형 스캐너 raw로 읽습니다. 스캐너 소프트웨어가 정확히 이런 파일을 씁니다. SilverFast는 48bit 출력에 Gamma=1, HDRScan=Yes를 적고 프로필을 넣지 않으며, VueScan raw도 같고, 스캐너 플러그인은 백엔드의 선형 TIFF를 그대로 넘깁니다. 이 선형 값을 감마 인코딩으로 읽으면 값 도메인이 무너져 필름 베이스 실측이 Dmin을 찾지 못하고, 반전 결과가 밝고 평평해져 자동 톤과 자동 화이트 밸런스로도 되살릴 수 없었습니다. 같은 파일에서 재보니 베이스를 못 잡고 p1=0.675에 뭉쳐 있던 결과가, 베이스 0.236/0.135/0.072와 함께 p1=0.012~p99=0.847로 펼쳐졌습니다. 플러그인으로 직접 스캔한 파일도 스캔이 아니라 가져오기로 넣으면 똑같이 무너졌고, 그래서 파일이 아니라 디코드 경로가 원인임이 드러났습니다.
  • 프리뷰 스캔은 스캐너가 16bit를 보고하면 16bit로 요청합니다. 프리뷰도 프레임과 같은 현상 경로를 타므로, 8bit로 선형 raw를 돌려주는 백엔드(중립 raw 색·선형 감마로 돌리는 Epson 등)에서는 프리뷰가 흰색으로 붕떴습니다. 평판 프리뷰는 프레임 자동 검출이 올라타는 작업면이기도 합니다.
  • 필름 카메라가 남기지 않는 촬영 기록을 프레임에 적을 수 있습니다. 제목·저작권 옆에서 카메라, 렌즈, 필름, ISO, 셔터, 조리개, 초점 거리를 적으면 내보낸 파일의 EXIF에 실려, 다른 앱이 디지털 사진과 똑같이 읽습니다. 기록은 카탈로그에만 저장하며 원본 파일은 수정하지 않습니다.
  • 촬영 카메라를 적으면 EXIF의 Make와 Model은 스캐너가 아니라 그 카메라입니다. 사진을 찍은 장비가 먼저이기 때문입니다. 스캐너 식별자는 사이드카에 그대로 남습니다. 필름 이름은 표준 EXIF 태그가 없어 현상 프로세스 옆 UserComment에 적으며, 메타데이터를 최소로 내보내는 정책에서는 싣지 않습니다.
  • ISOSpeedRatings처럼 정수 배열을 받는 EXIF 태그를 실수로 기록해 ImageIO가 태그를 통째로 버렸습니다. 가져온 파일에 이미 있던 ISO까지 내보내기에서 사라졌습니다. 이제 정수로 기록합니다.
  • 필름 탭을 다시 만들었습니다. 슬라이드와 컬러 네거티브를 각각의 카드로 나누고, 선택한 필름을 한 번 더 누르면 해제되므로 None 항목을 없앴습니다. 강도 슬라이더는 폼이 컨트롤 레이블 자리로 잡아 두던 열에 밀리지 않고 카드 폭을 채웁니다.

검증

  • 전체 strict-concurrency 스위트 통과: 1,676개, 조건부 건너뜀 15개
  • GUI 테스트 빌드 통과
  • 붕뜨는 가져오기를 스캐너 소프트웨어 파일과 플러그인 스캔본 양쪽에서 재현·측정했고, 수정 후 둘 다 스캔 경로와 동일하게 현상됩니다. 8bit 파일과 프로필이 있는 파일은 영향이 없습니다.
  • 내보낸 파일을 다시 읽어 확인: 카메라·렌즈·ISO·셔터·조리개·초점 거리·필름 이름이 EXIF에 기록되고, 촬영 카메라를 적지 않으면 스캐너 식별자가 유지되며, 최소 메타데이터 정책에서는 기록이 빠집니다.
  • 이전 버전에서 만든 카탈로그도 그대로 열리고, 촬영 기록은 카탈로그 왕복에서 보존됩니다.
  • 새로 만든 필름 탭은 실행 중인 앱에서 확인했습니다.
  • arm64 및 Universal ZIP, DMG, PKG, dSYM 릴리즈 빌드 통과
  • 릴리즈 자산 10개의 로컬 SHA-256 검증 통과
  • 실제 스캐너의 광학·모터·USB 동작은 실기 QA가 필요합니다.

日本語

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

ダウンロード

  • ほとんどのMac: negaflow-1.0.2-1-macOS-universal.pkg
  • Apple Silicon専用: negaflow-1.0.2-1-macOS-arm64.pkg
  • 手動インストール用のZIPとDMGも提供します。

重要:署名と公証の状態

これらの成果物はad-hoc署名で、Appleの公証を受けていません。初回起動が止められた場合は、SHA256SUMSでダウンロードを確認し、一度開いてからシステム設定 → プライバシーとセキュリティ → このまま開くで許可してください。

2026年7月29日 02:30 JST 更新

変更点

  • プロファイルのない16bit TIFFを取り込むと、リニアなスキャナーrawとして読み取ります。スキャナーソフトはまさにこの形式を書き出します。SilverFastは48bit出力にGamma=1、HDRScan=Yesと記録してプロファイルを付けず、VueScan rawも同様で、スキャナープラグインはバックエンドのリニアTIFFをそのまま渡します。このリニア値をガンマ符号化として読むと値の領域が潰れ、フィルムベースの実測がDminを見つけられず、反転結果が明るく平坦になって自動トーンや自動ホワイトバランスでも戻せませんでした。同じファイルで測ると、ベースを取れずp1=0.675に固まっていた結果が、ベース0.236/0.135/0.072とともにp1=0.012〜p99=0.847へ広がりました。プラグインで取得したスキャンも、スキャンではなく取り込みとして入れると同じように崩れ、原因がファイルではなくデコード経路にあることが分かりました。
  • プレビュースキャンは、スキャナーが16bitを報告する場合に16bitで要求します。プレビューもコマと同じ現像経路を通るため、8bitでリニアrawを返すバックエンド(中立rawカラーとリニアガンマで動かすEpsonなど)ではプレビューが白く飛んでいました。フラットベッドのプレビューはコマ自動検出が乗る作業面でもあります。
  • フィルムカメラが残さない撮影記録をコマに書けます。タイトルや著作権の隣にカメラ、レンズ、フィルム、ISO、シャッター、絞り、焦点距離を書くと、書き出したファイルのEXIFに記録され、ほかのアプリはデジタル写真と同じように読み取ります。記録はカタログにのみ保存し、元のファイルは変更しません。
  • 撮影カメラを書いた場合、EXIFのMakeとModelはスキャナーではなくそのカメラです。写真を撮った機材が先だからです。スキャナーの識別情報はサイドカーに残ります。フィルム名は標準のEXIFタグがないため、現像方式の隣のUserCommentに記録し、メタデータを最小にする書き出し方針では載せません。
  • ISOSpeedRatingsのように整数の配列を受け取るEXIFタグを小数で書いていたため、ImageIOがタグを丸ごと破棄していました。取り込んだファイルに元からあったISOまで書き出しで失われていました。これからは整数で記録します。
  • フィルムタブを作り直しました。スライドとカラーネガをそれぞれのカードに分け、選択中のフィルムをもう一度押すと解除されるため、None項目をなくしました。強度スライダーは、フォームがコントロールのラベル用に確保していた列に押し込まれず、カードの幅いっぱいに広がります。

検証

  • strict-concurrency全スイート成功:1,676件、条件付きスキップ15件
  • GUIテストビルド成功
  • 白く飛ぶ取り込みを、スキャナーソフトのファイルとプラグインのスキャンの両方で再現・測定しました。修正後はどちらもスキャン経路と同一に現像され、8bitやプロファイル付きのファイルには影響しません。
  • 書き出したファイルを読み直して確認:カメラ、レンズ、ISO、シャッター、絞り、焦点距離、フィルム名がEXIFに入り、撮影カメラを書かなければスキャナーの識別情報が残り、最小メタデータ方針では記録が入りません。
  • 以前のバージョンで作ったカタログもそのまま開き、撮影記録はカタログの往復で保たれます。
  • 作り直したフィルムタブは実行中のアプリで確認しました。
  • arm64とUniversalのZIP、DMG、PKG、dSYMのリリースビルド成功
  • リリース資産10個のローカルSHA-256検証成功
  • 実機の光学・モーター・USB動作は実機QAが必要です。

简体中文

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

下载

  • 大多数 Mac:negaflow-1.0.2-1-macOS-universal.pkg
  • 仅 Apple Silicon:negaflow-1.0.2-1-macOS-arm64.pkg
  • 同时提供用于手动安装的 ZIP 与 DMG。

重要:签名与公证状态

这些文件仅为 ad-hoc 签名,未经过 Apple 公证。若 macOS 阻止首次启动,请先用随附的 SHA256SUMS 校验下载文件,尝试打开一次,再到系统设置 → 隐私与安全性 → 仍要打开手动放行。

2026年7月29日 01:30 CST 更新

变更

  • 导入没有嵌入配置文件的 16bit TIFF 时,现在按其本来的线性扫描 raw 读取。扫描软件写出的正是这种文件:SilverFast 在 48bit 输出中标注 Gamma=1、HDRScan=Yes 且不嵌入配置文件,VueScan raw 也一样,扫描仪插件则原样传递后端的线性 TIFF。把这些线性值当作伽马编码读取会压垮数值域,于是片基测量找不到可信的 Dmin,反相结果又淡又平,自动色调与自动白平衡都救不回来。在同一个文件上测量:修复前没有测得片基、数据挤在 p1=0.675;修复后片基为 0.236/0.135/0.072,范围覆盖 p1=0.012 至 p99=0.847。由插件自己扫描得到的文件,一旦以导入而非扫描的方式进入,也会同样崩坏——这说明问题出在解码路径而不是文件。
  • 预览扫描在扫描仪报告支持 16bit 时会按 16bit 请求。预览与画幅走同一条显影路径,因此以 8bit 返回线性 raw 的后端(例如以中性 raw 色彩与线性伽马驱动的 Epson)会得到发白、褪色的预览;而平板预览又正是画幅自动识别所依赖的工作面。
  • 现在可以为每一张画幅记录胶片相机不会写入的拍摄信息。在标题与版权旁填写相机、镜头、胶片、ISO、快门、光圈与焦距,导出时会写入文件的 EXIF,其他应用读取它就像读取数码照片一样。记录只保存在目录中,绝不修改原始文件。
  • 填写了拍摄相机后,EXIF 的 Make 与 Model 属于该相机而不是扫描仪,因为照片是用它拍的。扫描仪的标识仍保留在附属文件中。胶片名称没有标准 EXIF 标签,因此写入显影流程旁的 UserComment;当导出策略要求最少元数据时不会写入。
  • 像 ISOSpeedRatings 这类只接受整数数组的 EXIF 标签此前被写成小数,ImageIO 会整条丢弃,因此 ISO 从未在导出中保留下来——包括导入文件中原本就有的 ISO。现在按整数写入。
  • 重做了胶片标签页。反转片与彩色负片各自成卡片,再次点击已选胶片即可取消选择,因此去掉了 None 项。强度滑块填满整张卡片,不再被挤进表单为控件标签预留的那一列。

#...

Read more

negaflow 1.0.1

Choose a tag to compare

@habinsong habinsong released this 28 Jul 13:39

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Downloads

  • Most Macs: negaflow-1.0.1-1-macOS-universal.pkg
  • Apple Silicon only: negaflow-1.0.1-1-macOS-arm64.pkg
  • ZIP and DMG files for manual installation are provided as well.

Important: signing and notarization status

These artifacts are ad-hoc signed and are not notarized by Apple. macOS may block the first launch. Verify the download against the accompanying SHA256SUMS file, try to open it once, and allow it in System Settings → Privacy & Security → Open Anyway.

Updated July 28, 2026 at 13:02 UTC

Changes

  • A destination folder that cannot be created is reported instead of being swallowed, together with the volume, file system, removable and writable state, so an export failure can be told apart from a permission or disconnected-disk problem.

  • Flatbed film scanning now uses a 300 dpi preview, supports multiple detected or manually added frames, and validates each positioned region against the scanner bed.

  • Scanners without an exact 3600 dpi entry now start at the closest supported resolution instead of falling back to the lowest value, such as 50 dpi.

  • Scanner capability failures are shown beside the affected control, and scanner reconnection refreshes stale capability state.

  • The flatbed frame detector was expanded for 35 mm, 120, 4×5 and 8×10 layouts, with simulator fixtures and geometry regression coverage.

  • Film emulation profiles were rebuilt as explicit negative and slide profiles, and the Develop inspector now exposes the selected development process.

  • Interrupted batch exports preserve and resume their checkpoint state more reliably.

  • A neutral brightness or contrast is no longer sent to the scanner. The value changed nothing and could fail the whole scan when the device reported the option as inactive.

  • Flatbed scan geometry is now checked against the area the scanner actually used rather than the area that was requested, and a plug-in may report a scan height that differs from the request by less than a millimetre when it has to work around a backend that miscomputes the scan size. Requiring an exact match rejected such a scan outright. The preview already did this; the full scan did not, so a plug-in that had to adjust the area to work around a scanner made a correct scan look wrong and the frame was thrown away.

  • A rejected scan now reports the expected pixel size derived from the area, the signed deviation, and the requested area when it differs from the applied one, so the failure can be diagnosed from the message alone.

  • When one frame fails to finalize, the remaining frames are no longer skipped without a trace. Publishing still stops, but each remaining frame is recorded as failed with the reason, instead of leaving the scan ending with photos missing and nothing to say which cuts were lost. If that record cannot be written either, the scan reports it rather than staying quiet.

  • Scanning several frames in a row now shows the progress of the whole batch. Showing one frame at a time made a healthy scan look broken: the backend reports acquisition only up to 92%, and the jump back to 0% for the next frame arrived before the finished state could be drawn, so every frame appeared to stall at 92% and restart.

Verified

  • Full strict-concurrency suite passes: 1,662 tests, 15 conditionally skipped
  • arm64 and Universal ZIP, DMG, PKG and dSYM release builds pass
  • Local SHA-256 verification of all 10 release assets passes
  • Real scanner optical, motor and USB behavior still requires device QA

한국어

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

다운로드

  • 대부분의 Mac: negaflow-1.0.1-1-macOS-universal.pkg
  • Apple Silicon 전용: negaflow-1.0.1-1-macOS-arm64.pkg
  • 수동 설치용 ZIP과 DMG도 함께 제공합니다.

중요: 서명 및 공증 상태

이 배포 파일은 ad-hoc 서명되었으며 Apple 공증을 받지 않았습니다. macOS가 최초 실행을 차단할 수 있습니다. 다운로드한 파일을 함께 제공된 SHA256SUMS와 대조한 뒤 한 번 열기를 시도하고, 시스템 설정 → 개인정보 보호 및 보안 → 그래도 열기에서 직접 허용하십시오.

2026년 7월 28일 22:02 KST 갱신

변경 사항

  • 대상 폴더를 만들 수 없으면 삼키지 않고 볼륨·파일시스템·이동식 여부·쓰기 가능 여부와 함께 알립니다. 권한 문제인지 디스크가 빠진 것인지 구분할 수 있습니다.

  • 평판 필름 스캔은 300 dpi 프리뷰를 사용하고, 자동 검출 또는 수동 추가한 여러 프레임을 처리하며, 각 위치 지정 영역이 스캐너 베드를 벗어나지 않는지 검사합니다.

  • 정확히 3600 dpi가 없는 스캐너는 50 dpi 같은 최저값으로 떨어지지 않고 가장 가까운 지원 해상도로 시작합니다.

  • 스캐너 capability 오류를 해당 컨트롤 옆에서 설명하고, 재연결 시 오래된 capability 상태를 다시 읽습니다.

  • 평판 프레임 검출기를 35 mm, 120, 4×5, 8×10 배치에 맞게 확장하고 시뮬레이터 픽스처와 기하 회귀 테스트를 보강했습니다.

  • 필름 에뮬레이션을 네거티브·슬라이드 프로필로 명확히 분리하고, 현상 인스펙터에서 선택한 현상 프로세스를 표시합니다.

  • 중단된 일괄 내보내기의 체크포인트 저장과 재개를 더 안정적으로 처리합니다.

  • 건드리지 않은 밝기·대비는 스캐너로 보내지 않습니다. 결과를 바꾸지 않는 값인데, 장치가 그 옵션을 비활성으로 보고하면 스캔 전체가 실패했습니다.

  • 평판 스캔의 기하 검사를 요청한 영역이 아니라 스캐너가 실제로 사용한 영역과 대조합니다. 스캔 크기를 잘못 계산하는 백엔드를 우회해야 할 때 플러그인이 요청과 1mm 미만 다른 높이를 보고할 수 있으며, 완전 일치를 요구하면 그런 스캔이 통째로 거부됐습니다. 프리뷰는 이미 그렇게 했지만 본 스캔은 아니어서, 플러그인이 스캐너를 우회하려고 영역을 조정하면 정상 스캔이 잘못된 것으로 보여 프레임이 버려졌습니다.

  • 거부된 스캔은 영역에서 계산한 기대 픽셀 크기, 부호 있는 편차, 그리고 적용 영역과 다를 때의 요청 영역을 함께 표시합니다. 메시지만으로 원인을 판정할 수 있습니다.

  • 한 프레임의 마무리가 실패해도 남은 프레임을 흔적 없이 건너뛰지 않습니다. 발행은 그대로 중단하되 남은 프레임을 원인과 함께 실패로 기록합니다. 이전에는 사진만 사라지고 어느 컷이 왜 없어졌는지 알 방법이 없었습니다. 그 기록조차 남기지 못하면 조용히 넘어가지 않고 알립니다.

  • 여러 컷을 이어 스캔할 때 배치 전체의 진행률을 보여줍니다. 컷 단위로 보여주면 정상 스캔이 실패처럼 보였습니다. 백엔드가 획득을 92%까지만 보고하는데, 완료 상태가 화면에 그려지기 전에 다음 컷의 0%가 먼저 적용돼서 매 컷이 92%에서 멈췄다가 다시 시작하는 것처럼 보였습니다.

검증

  • 전체 strict-concurrency 스위트 통과: 1,662개, 조건부 건너뜀 15개
  • arm64 및 Universal ZIP, DMG, PKG, dSYM 릴리즈 빌드 통과
  • 릴리즈 자산 10개의 로컬 SHA-256 검증 통과
  • 실제 스캐너의 광학·모터·USB 동작은 실기 QA가 필요합니다.

日本語

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

ダウンロード

  • ほとんどのMac: negaflow-1.0.1-1-macOS-universal.pkg
  • Apple Silicon専用: negaflow-1.0.1-1-macOS-arm64.pkg
  • 手動インストール用のZIPとDMGも提供します。

重要:署名と公証の状態

これらの成果物はad-hoc署名で、Appleの公証を受けていません。初回起動が止められた場合は、SHA256SUMSでダウンロードを確認し、一度開いてからシステム設定 → プライバシーとセキュリティ → このまま開くで許可してください。

2026年7月28日 22:02 JST 更新

変更点

  • 作成できない書き出し先フォルダは黙って流さず、ボリューム・ファイルシステム・リムーバブル・書き込み可否とともに知らせます。権限の問題かディスク未接続かを見分けられます。

  • フラットベッドのフィルムスキャンは300 dpiプレビューを使い、自動検出または手動追加した複数コマを扱い、各領域がスキャナーベッド内に収まるか検証します。

  • 3600 dpiが一覧にないスキャナーでも、50 dpiなどの最小値ではなく最も近い対応解像度から始まります。

  • capabilityの問題を該当する操作欄の横に表示し、再接続時には古いcapabilityを読み直します。

  • 35 mm、120、4×5、8×10向けにフラットベッドのコマ検出を拡張し、シミュレーターと幾何回帰テストを追加しました。

  • フィルムエミュレーションをネガとスライドの明示的なプロファイルに再構成し、現像インスペクターで処理方式を選べます。

  • 中断した一括書き出しのチェックポイント保存と再開を安定させました。

  • 変更していない明るさ・コントラストはスキャナーへ送りません。結果を変えない値ですが、装置がそのオプションを非アクティブと報告するとスキャン全体が失敗していました。

  • フラットベッドのスキャン形状を、要求した領域ではなくスキャナーが実際に使った領域と照合します。スキャンサイズを誤計算するバックエンドを回避する際、プラグインは要求と1mm未満異なる高さを報告できます。完全一致を求めるとそのスキャンが丸ごと拒否されていました。プレビューは既にそうでしたが本スキャンは違ったため、プラグインがスキャナーを回避するために領域を調整すると正常なスキャンが誤りに見え、コマが破棄されていました。

  • 拒否されたスキャンは、領域から導いた期待ピクセルサイズ、符号付きの偏差、適用領域と異なる場合の要求領域を併記します。メッセージだけで原因を判定できます。

  • 1コマの仕上げが失敗しても、残りのコマを痕跡なく飛ばしません。書き出しの停止はそのままに、残りのコマを理由付きで失敗として記録します。以前は写真だけが消え、どのコマがなぜ失われたか分かりませんでした。その記録すら残せない場合も黙らずに知らせます。

  • 複数コマを続けてスキャンする際、バッチ全体の進捗を表示します。コマ単位の表示では正常なスキャンが失敗に見えていました。バックエンドは取得を92%までしか報告せず、完了状態が描かれる前に次のコマの0%が適用されるため、毎コマ92%で止まって再開するように見えていました。

検証

  • strict-concurrency全スイート成功:1,662件、条件付きスキップ15件
  • arm64とUniversalのZIP、DMG、PKG、dSYMのリリースビルド成功
  • リリース資産10個のローカルSHA-256検証成功
  • 実機の光学・モーター・USB動作は実機QAが必要です。

简体中文

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

下载

  • 大多数 Mac:negaflow-1.0.1-1-macOS-universal.pkg
  • 仅 Apple Silicon:negaflow-1.0.1-1-macOS-arm64.pkg
  • 同时提供用于手动安装的 ZIP 与 DMG。

重要:签名与公证状态

这些文件仅为 ad-hoc 签名,未经过 Apple 公证。若 macOS 阻止首次启动,请先用随附的 SHA256SUMS 校验下载文件,尝试打开一次,再到系统设置 → 隐私与安全性 → 仍要打开手动放行。

2026年7月28日 21:02 CST 更新

变更

  • 无法创建的目标文件夹会明确报告,并附上卷、文件系统、可移动与可写状态,以便区分权限问题与磁盘未连接。

  • 平板胶片扫描改用 300 dpi 预览,可处理自动识别或手动添加的多个画幅,并验证每个定位区域是否位于扫描床范围内。

  • 扫描仪没有 3600 dpi 选项时,会选择最接近的支持分辨率,而不再回落到 50 dpi 等最低值。

  • capability 问题会显示在对应控件旁;重新连接时会刷新过期的 capability 状态。

  • 平板画幅识别扩展到 35 mm、120、4×5 与 8×10 布局,并增加模拟器样本和几何回归测试。

  • 胶片模拟重构为明确的负片与反转片配置,显影面板会显示所选显影流程。

  • 提高了中断后批量导出检查点保存与恢复的可靠性。

  • 未调整过的亮度与对比度不再发送给扫描仪。该值不会改变结果,但设备将该选项报告为非活动时会导致整次扫描失败。

  • 平板扫描的几何校验现在比对扫描仪实际使用的区域,而不是请求的区域。当需要规避会算错扫描尺寸的后端时,插件可以报告与请求相差不到 1 mm 的高度;要求完全一致会让这类扫描被整个拒绝。预览早已如此,正式扫描却不是,因此当插件为规避扫描仪而调整区域时,正常扫描会被判为错误并丢弃画幅。

  • 被拒绝的扫描会给出由区域推算的期望像素尺寸、带符号的偏差,以及与实际区域不同时的请求区域,仅凭消息即可定位原因。

  • 某一画幅收尾失败时,其余画幅不再被无声跳过。发布仍会停止,但每个剩余画幅都会带原因记录为失败,不再出现照片消失却无从得知丢了哪些画幅的情况。若连这条记录也写不进去,也会明确提示而不是保持沉默。

  • 连续扫描多个画幅时显示整批的进度。按单个画幅显示会让正常扫描看起来像失败:后端只把采集报告到 92%,而下一画幅的 0% 会在完成状态绘制之前生效,于是每个画幅都像卡在 92% 然后重新开始。

验证

  • strict-concurrency 全套测试通过:1,662 项,条件跳过 15 项
  • arm64 与 Universal 的 ZIP、DMG、PKG、dSYM 发布构建通过
  • 10 个发布文件的本地 SHA-256 校验通过
  • 真实扫描仪的光学、马达与 USB 行为仍需实机 QA。

Français

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Téléchargements

  • La plupart des Mac : negaflow-1.0.1-1-macOS-universal.pkg
  • Apple Silicon uniquement : negaflow-1.0.1-1-macOS-arm64.pkg
  • Des fichiers ZIP et DMG sont également fournis pour l’installation manuelle.

Important : signature et notarisation

Ces fichiers sont signés en ad-hoc et ne sont pas notarisés par Apple. Si macOS bloque le premier lancement, vérifiez le téléchargement avec le fichier SHA256SUMS, tentez de l’ouvrir une fois, puis autorisez-le dans Réglages Système → Confidentialité et sécurité → Ouvrir quand même.

Mis à jour le 28 juillet 2026 à 15:02 CEST

Modifications

  • Un dossier de destination impossible à créer est signalé au lieu d'être ignoré, avec le volume, le système de fichiers et l'état amovible et inscriptible, afin de distinguer un problème de droits d'un disque déconnecté.

  • La numérisation à plat utilise désormais un aperçu à 300 dpi, accepte plusieurs vues détectées ou ajoutées manu...

Read more

negaflow 1.0.0 — GrainMend detection accuracy, ±5 stop exposure, canvas tool fixes

Choose a tag to compare

@habinsong habinsong released this 27 Jul 07:00

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

Downloads

  • Most Macs: negaflow-1.0.0-1-macOS-universal.pkg
  • Apple Silicon only: negaflow-1.0.0-1-macOS-arm64.pkg
  • ZIP and DMG for manual installation are provided as well.

Important: signing and notarization status

These artifacts are ad-hoc signed and are not notarized by Apple. macOS may block the first launch. Check that the SHA-256 of your download matches the SHA256SUMS file published alongside it, then try to open it once and allow it yourself in System Settings → Privacy & Security → Open Anyway.

Changes

  • A photo that the memory cache had evicted no longer stays at thumbnail resolution when you come back to it. Moving a slider or relaunching was the only way to get the full-resolution render back; it now redevelops on its own.
  • Guided Grain Mend no longer turns coarse grain into one huge defect. On black-and-white film a dragged region could report a single emulsion defect while covering most of the region, and removing it smeared the area. A component is now accepted only when its strong core fills enough of it, and the guided sensitivity ceiling matches automatic again.
  • Escape releases the active canvas tool — crop, brush, guided defects, clone stamp and base picking — just like clicking its toggle again.
  • Flipping now mirrors what you see. After a quarter turn, flipping horizontally flipped the photo top to bottom; it follows the on-screen axis.
  • The library header no longer flickers left and right while you drag the side panel edge.
  • Exposure reaches ±5 stops so underexposed slide film can be brought back, and auto tone may use up to ±3. Keyboard nudges and typed values keep their precision.
  • Grain Mend automatic no longer throws its results away when many candidates are found. It keeps every detection and only warns that the risk of false detections is high, so you decide what to exclude.
  • Raised automatic scratch detection. Structure rejection used to drop long scratches whenever short line texture sat nearby; it now compares only lines of comparable length.
  • Automatic mistakes railings, window frames and paving joints for scratches far less often. Each detected line is now extended past both of its ends, and dropped when the same line keeps going in the photo. A real scratch ends where it ends, so it stays.
  • Automatic and guided are separate tools. Each keeps its own sensitivity and slider range, and the guided slider reaches 1.5x the automatic maximum.
  • The library, develop and print side panels can be resized by dragging their inner edge. Widths are kept when you switch workspaces and across launches.
  • The top bar no longer disappears in full screen.
  • Zooming into a photo no longer draws it over the side panels or through the seam where they meet the top bar. The canvas now clips to its own area.
  • The export and quick export buttons carry a folder button that opens where the photos actually land, so you no longer dig through the date and source folders yourself. It works before your first export too.
  • Press Return to run defect removal in GrainMend — auto, guided and brush alike.
  • Settings → General can decide whether micro speck detection starts on, separately for auto and guided. It is only a starting value: every frame keeps its own checkbox and the setting is remembered between launches.
  • Settings → General gains a memory cache section. The resident frame limits follow installed memory by default and can be set by hand, with the worst-case resident estimate shown.
  • Stepping quickly through frames no longer leaves a soft preview behind, and thumbnails follow the orientation of the photo.
  • Defect counts and layer names now follow the app language instead of the system language.
  • The status bar drops the duplicated scan progress bar, keeps the centered message readable in narrow windows, and lets the phase label fade after a few seconds.
  • A scanner that reports no bit depth now says so where the depth picker was. Preview and scan stay disabled for such a scanner, and until now the reason was invisible.

Verified

  • Full test suite passes: 1616 tests, 15 skipped
  • arm64 and Universal ZIP, DMG, PKG, dSYM release build passes
  • Local SHA-256 verification of the 8 binary assets passes

한국어

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

다운로드

  • 대부분의 Mac: negaflow-1.0.0-1-macOS-universal.pkg
  • Apple Silicon 전용: negaflow-1.0.0-1-macOS-arm64.pkg
  • 수동 설치용 ZIP과 DMG도 함께 제공합니다.

중요: 서명 및 공증 상태

이 배포 파일은 ad-hoc 서명되었으며 Apple 공증을 받지 않았습니다. macOS가 최초 실행을 차단할 수 있습니다. 다운로드한 파일의 SHA-256이 함께 제공된 SHA256SUMS 파일과 일치하는지 확인한 뒤, 한 번 열기를 시도하고 시스템 설정 → 개인정보 보호 및 보안에서 그래도 열기를 선택해 직접 허용하십시오.

변경 사항

  • 메모리 캐시에서 내려간 사진으로 돌아왔을 때 저해상도 썸네일에 머무르지 않습니다. 슬라이더를 움직이거나 앱을 다시 켜야만 원래 화질로 돌아오던 것을 고쳐, 이제 알아서 다시 현상합니다.
  • 가이드 Grain Mend가 굵은 그레인을 거대한 결함 하나로 잡지 않습니다. 흑백 필름에서 영역을 드래그하면 유제 손상 1건으로 표시되면서 실제로는 영역 상당 부분이 검출돼 제거 시 뭉개졌습니다. 이제 컴포넌트는 코어가 충분히 차 있을 때만 채택하고, 가이드 민감도 상한도 자동과 같아졌습니다.
  • ESC로 활성 도구를 해제합니다 — 크롭·브러시·가이드 결함·복제 도장·베이스 선택 모두 토글을 다시 누른 것과 같습니다.
  • 뒤집기가 보이는 대로 동작합니다. 90도 회전 뒤 좌우 뒤집기를 누르면 상하로 뒤집히던 문제를 고쳐 화면 축을 따릅니다.
  • 좌측 탭 크기를 조절하는 동안 라이브러리 헤더가 좌우로 깜빡이며 튀지 않습니다.
  • 노출을 ±5스톱까지 조절할 수 있어 노출 부족한 슬라이드 필름을 되살릴 수 있고, 자동 톤은 ±3까지 씁니다. 키보드 미세 조정과 값 직접 입력의 정밀도는 그대로입니다.
  • Grain Mend 자동이 후보가 많다고 결과를 버리지 않습니다. 검출을 모두 유지하고 오탐지 위험이 높다는 경고만 표시하므로, 무엇을 제외할지는 사용자가 정합니다.
  • 자동 스크래치 검출률을 높였습니다. 주변에 짧은 잔선이 있으면 긴 스크래치까지 구조물로 몰아 버리던 배제 규칙이, 이제 길이가 비슷한 선끼리만 비교합니다.
  • 자동이 난간·창틀·보도블럭 줄눈을 스크래치로 잡는 오검출이 크게 줄었습니다. 검출한 선을 양 끝 바깥으로 이어 보고, 사진에 같은 선이 계속되면 구조물로 판단해 버립니다. 진짜 스크래치는 끝나는 자리에서 실제로 끝나므로 그대로 남습니다.
  • 자동과 가이드는 별개 도구입니다. 각각 민감도와 슬라이더 범위를 따로 가지며, 가이드 슬라이더는 자동 최대의 1.5배까지 올라갑니다.
  • 라이브러리·현상·인화의 좌우 탭을 안쪽 모서리를 끌어 크기 조절할 수 있습니다. 조절한 폭은 뷰를 옮겨도, 앱을 다시 켜도 유지됩니다.
  • 전체화면에서 상단 바가 사라지지 않습니다.
  • 사진을 확대해도 좌우 탭 위로 넘치거나 상단 탭과 만나는 이음새로 비치지 않습니다. 캔버스가 자기 영역에서 잘립니다.
  • 내보내기와 빠른 내보내기 버튼에 폴더 버튼이 생겼습니다. 사진이 실제로 저장되는 폴더를 바로 열어 주므로 날짜와 출처 폴더를 직접 찾아 들어가지 않아도 됩니다. 아직 내보내기 전에도 동작합니다.
  • GrainMend의 자동·가이드·브러시 모두 Return 키로 결함 제거를 실행합니다.
  • 설정 → 일반에서 미세 입자 검출을 기본으로 켤지 자동과 가이드 각각 정할 수 있습니다. 시작값일 뿐이라 프레임마다 체크박스로 따로 켜고 끌 수 있고, 정한 값은 앱을 다시 켜도 유지됩니다.
  • 설정 → 일반에 메모리 캐시 항목이 생겼습니다. 상주 프레임 한도가 기본적으로 설치 메모리를 따라가고, 직접 정할 수도 있으며, 최악의 경우 상주량을 함께 보여줍니다.
  • 프레임을 빠르게 넘겨도 저화질 프리뷰가 남지 않고, 썸네일이 사진과 같은 방향으로 보입니다.
  • 결함 개수와 레이어 이름이 시스템 언어가 아니라 앱 언어를 따릅니다.
  • 하단 바에서 중복되던 스캔 진행 막대를 없애고, 좁은 창에서 가운데 메시지가 가려지지 않게 했으며, 단계 표시는 몇 초 뒤 사라집니다.
  • 심도를 보고하지 않는 스캐너는 심도 선택 자리에 그 사유를 표시합니다. 이런 스캐너는 프리뷰와 스캔이 잠기는데, 지금까지는 이유가 보이지 않았습니다.

검증

  • 전체 테스트 통과: 1616개, 15개 건너뜀
  • arm64 및 Universal ZIP, DMG, PKG, dSYM 릴리즈 빌드 통과
  • 바이너리 자산 8개의 로컬 SHA-256 검증 통과

日本語

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

ダウンロード

  • ほとんどのMac: negaflow-1.0.0-1-macOS-universal.pkg
  • Apple Silicon専用: negaflow-1.0.0-1-macOS-arm64.pkg
  • 手動インストール用のZIPとDMGも合わせて提供します。

重要:署名と公証の状態

この配布ファイルはad-hoc署名で、Appleの公証を受けていません。macOSが最初の起動を止めることがあります。ダウンロードしたファイルのSHA-256が同梱のSHA256SUMSファイルと一致するか確かめたうえで、一度開くことを試し、システム設定 → プライバシーとセキュリティこのまま開くを選んで自分で許可してください。

変更点

  • メモリキャッシュから外れた写真に戻ったとき、サムネイルの低画質のままになりません。スライダーを動かすかアプリを開き直すしか戻す方法がなかったものを直し、自動で現像し直します。
  • ガイドのGrain Mendが粗い粒子を巨大な欠陥ひとつにまとめなくなりました。白黒フィルムで領域をドラッグすると乳剤損傷1件と出ながら実際には領域の大部分が検出され、除去すると潰れていました。芯が十分に詰まっている場合だけ採用し、ガイドの感度上限も自動と同じに戻しました。
  • Escキーで使用中のツールを解除します — トリミング・ブラシ・ガイド欠陥・クローンスタンプ・ベース選択のいずれも、トグルをもう一度押したのと同じです。
  • 反転が見たとおりに動きます。90度回転したあとに左右反転を押すと上下が反転していた問題を直し、画面の軸に従います。
  • 左タブの幅を変えている間、ライブラリのヘッダーが左右にちらついて跳ねなくなりました。
  • 露出を±5段まで調整できるようになり、露出不足のリバーサルフィルムを戻せます。自動トーンは±3まで使います。キーボードの微調整と数値入力の精度は変わりません。
  • Grain Mendの自動モードは、候補が多いという理由で結果を捨てなくなりました。検出はすべて残し、誤検出の危険が高いという警告だけを出すので、何を除外するかは利用者が決めます。
  • 自動モードのキズ検出率を上げました。近くに短い線のテクスチャがあるだけで長いキズまで構造物として捨てていた規則が、長さの近い線どうしだけを比べるようになりました。
  • 自動モードが手すり・窓枠・敷石の目地をキズと誤検出することが大きく減りました。検出した線を両端の外へ延ばして確かめ、写真の中で同じ線が続いていれば構造物と判断して外します。本物のキズは終わるところで実際に終わるので、そのまま残ります。
  • 自動とガイドは別々の道具です。それぞれ感度とスライダーの範囲を持ち、ガイドのスライダーは自動の最大値の1.5倍まで上がります。
  • ライブラリ・現像・プリントの左右タブは、内側の縁をドラッグして幅を変えられます。変えた幅は画面を移っても、アプリを開き直しても保たれます。
  • フルスクリーンで上部バーが消えなくなりました。
  • 写真を拡大しても左右のタブの上にはみ出したり、上部バーとの継ぎ目から透けたりしなくなりました。キャンバスが自分の領域で切り取られます。
  • 書き出しとクイック書き出しのボタンにフォルダボタンが付きました。写真が実際に保存される場所をそのまま開くので、日付と取り込み元のフォルダを自分でたどる必要がありません。まだ一度も書き出していなくても動きます。
  • GrainMendの自動・ガイド・ブラシのいずれもReturnキーで傷取りを実行できます。
  • 設定 → 一般で微細粒子の検出を既定で入れるかを、自動とガイドそれぞれに決められます。あくまで初期値なので、コマごとのチェックボックスで個別に切り替えられ、設定はアプリを開き直しても保たれます。
  • 設定 → 一般にメモリキャッシュの項目が加わりました。常駐フレーム数は既定で搭載メモリに合わせて決まり、手動でも設定でき、最悪時の常駐量を併記します。
  • コマを速く送っても低画質のプレビューが残らず、サムネールが写真と同じ向きで表示されます。
  • ゴミ・キズの件数やレイヤー名が、システムの言語ではなくアプリの言語に従います。
  • 下部バーから重複していたスキャンの進捗バーを外し、狭い窓でも中央のメッセージが読めるようにし、段階の表示は数秒で消えます。
  • ビット深度を報告しないスキャナーでは、深度の選択欄にその理由を表示します。この場合プレビューとスキャンは無効のままですが、これまで理由が見えませんでした。

検証

  • 全テスト通過:1616件、15件スキップ
  • arm64とUniversalのZIP、DMG、PKG、dSYMのリリースビルド通過
  • バイナリ資産8個のローカルSHA-256検証を通過

简体中文

English · 한국어 · 日本語 · 简体中文 · Français · Deutsch

下载

  • 大多数 Mac:negaflow-1.0.0-1-macOS-universal.pkg
  • 仅 Apple Silicon:negaflow-1.0.0-1-macOS-arm64.pkg
  • 也一并提供手动安装用的 ZIP 和 DMG。

重要:签名与公证状态

这些分发文件是 ad-hoc 签名,没有经过 Apple 公证。macOS 可能会拦下第一次启动。请先核对下载文件的 SHA-256 与随附的 SHA256SUMS 文件是否一致,然后试着打开一次,再到系统设置 → 隐私与安全性里选择仍要打开手动放行。

变更

  • 回到被内存缓存移出的照片时,不再停留在缩略图的低分辨率上。以前只能靠拖动滑块或重开应用才能恢复,现在会自动重新显影。
  • 引导式 Grain Mend 不再把粗颗粒当成一个巨大瑕疵。在黑白胶片上拖拽区域时会显示一处乳剂损伤,实际却覆盖了大半个区域,去除后被抹平。现在只有实心核心足够充实的组件才会被采用,引导灵敏度上限也回到与自动一致。
  • Esc 键可解除当前画布工具 — 裁剪、画笔、引导瑕疵、仿制图章和片基取样,效果等同于再次点击开关。
  • 翻转按所见方向进行。旋转 90 度后按左右翻转却上下翻转的问题已修复,现在遵循屏幕坐标轴。
  • 拖动左侧面板边缘时,图库标题栏不再左右闪烁跳动。
  • 曝光可调至 ±5 挡,可救回曝光不足的反转片;自动色调最多使用 ±3。键盘微调与直接输入数值的精度保持不变。
  • Grain Mend 自动模式不再因候选过多而丢弃结果。它保留全部检测,只提示误检风险较高,由你决定排除哪些。
  • 提高了自动模式的划痕检出率。以前只要附近有短线纹理,长划痕也会被当作结构物剔除;现在只在长度相近的线之间比较。
  • 自动模式把栏杆、窗框和地砖接缝...
Read more