v0.2.0: photo mosaic 2x resolution + version bump
- mosaic: resolution slider up to 192 cols (was 96), default 96, output canvas cap 3600px so higher density renders/saves at genuinely higher resolution Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -7,5 +7,5 @@
|
||||
"corePurpose": "",
|
||||
"detailLevel": "standard",
|
||||
"createdAt": "2026-06-01T04:16:09.722Z",
|
||||
"updatedAt": "2026-06-02T05:39:25.175Z"
|
||||
"updatedAt": "2026-06-02T07:18:12.522Z"
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ai-photo-organizer",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"description": "Local-first AI photo organizer — face recognition + EXIF based auto archiving",
|
||||
"author": "PhotoAI",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -41,7 +41,7 @@ export function MosaicView(props: {
|
||||
const poolRef = useRef<Tile[]>([])
|
||||
const targetImgRef = useRef<HTMLImageElement | null>(null)
|
||||
const [ready, setReady] = useState(false)
|
||||
const [cols, setCols] = useState(48)
|
||||
const [cols, setCols] = useState(96)
|
||||
const [blend, setBlend] = useState(0.35)
|
||||
const [unique, setUnique] = useState(true)
|
||||
|
||||
@@ -89,7 +89,8 @@ export function MosaicView(props: {
|
||||
sctx.drawImage(tImg, 0, 0, gridCols, gridRows)
|
||||
const cells = sctx.getImageData(0, 0, gridCols, gridRows).data
|
||||
|
||||
const cellPx = Math.max(8, Math.round(1800 / gridCols))
|
||||
// 출력 캔버스 상한 3600px → 해상도(열 수)를 높여도 타일이 뭉개지지 않고 고해상도로 저장
|
||||
const cellPx = Math.max(8, Math.round(3600 / gridCols))
|
||||
canvas.width = gridCols * cellPx
|
||||
canvas.height = gridRows * cellPx
|
||||
const ctx = canvas.getContext('2d')!
|
||||
@@ -185,7 +186,7 @@ export function MosaicView(props: {
|
||||
<input
|
||||
type="range"
|
||||
min={16}
|
||||
max={96}
|
||||
max={192}
|
||||
step={2}
|
||||
value={cols}
|
||||
onChange={(e) => setCols(Number(e.target.value))}
|
||||
|
||||
Reference in New Issue
Block a user