Missing tools and adjustments
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- computer-graphics, frontend
Hướng nghiên cứu
Bắt đầu bằng cách chọn một công cụ hoặc điều chỉnh chưa được đánh dấu và tách nó thành một issue tập trung; issue tổng hợp này liệt kê một số thay đổi độc lập. Đối với công việc về chú thích, hãy đọc lib/editor/state.ts và buildAnnotationNode(); đối với các điều chỉnh, hãy kiểm tra lib/editor/filters.ts và AdjustPanel. Công việc liên quan đến văn bản cũng bao gồm render.ts và TextOverlay.vue, và done nên được xác định bởi issue tập trung của mục đã chọn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Collected while auditing the library against what the editor it replaces offered. Each of these is independent; split one off into its own issue when it gets picked up.
Tools
- Straight line (the arrow tool without the head) — #8
- Eraser, to take back part of a freehand stroke
- Multi-select, so several annotations can be moved or deleted together
- Copy and paste of annotations
- Per-annotation opacity
- Text outline, so a caption stays readable over a busy photo — #23
- Text background, the other way of solving the same problem — #24
- Font family — #25
- Text alignment — #29
- Freehand redaction; elliptical is split out into #28
- Crop to exact pixel dimensions, and a custom aspect ratio input
Adjustments
- Exposure — #7
- Temperature and tint — #7
- Sharpen — #7
- Highlights and shadows — #21
- Vignette — #21
Notes
The annotation types live in lib/editor/state.ts and are rendered in buildAnnotationNode(); a new one needs an entry in the rotate and flip mapping functions there, which is where the coordinate work is. Adjustments are cheaper: a custom filter in lib/editor/filters.ts plus a slider in AdjustPanel.
Text styling was one line here and should not have been: it went out as four
PRs, one per part. I claimed here that alignment needed a text box with a
width behind it, because Konva only honours align on a node that has one.
That was wrong. A block's width is identical whichever way it is aligned, so
the width comparison I based it on could never have shown anything. Measuring
the drawn pixels instead, Konva does align lines inside the block's own width,
and alignment came out the same shape as the other three: a state field, a
render line and a control.
The font is hardcoded in two places that have to agree for the editing overlay
to match what is drawn, render.ts and TextOverlay.vue. Whatever makes it
per-annotation has to thread through both. The trap is the export: if a face
is not loaded when the export canvas renders, Konva falls back silently and
the saved image differs from what was on screen, with no error.
Two things worth knowing from the first batch:
- The line tool was almost free because a two-point annotation shares its coordinate handling with freehand and arrows. An eraser or a freehand redaction will not be: both need new geometry rather than a new case in an existing
switch. - Adjustments that scale channels per pixel should join the existing
tonefilter rather than adding a pass of their own, since each pass is a full walk over the pixels. Sharpen is the exception: it reads its neighbours, so it has to be separate and it has to run last.
Corrected after the second batch, since this note sent me the wrong way:
- Highlights and shadows did not join
tone. That filter only runs when exposure, temperature or tint are set, so folding them in would mean either running it for every image or a condition covering five sliders. They share a pass with each other instead, which is the saving that mattered: they are the same operation weighted to opposite ends. - The vignette cannot join
toneat all. It needs the row width to know where a pixel sits, so it takesPixelImagelike sharpen does rather thanPixelData, and it runs last for the same reason sharpen does: it works on whatever the rest produced, the preset included.
Drafted by an assistant during an audit of the library; not yet reviewed.
- Ngôn ngữ chính
- TypeScript
- Star
- 2
- Fork
- 0
- Merge trung bình
- 1 giờ 15 phút
- Pull request đã merge (30 ngày)
- 31
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của nextcloud-libraries/nextcloud-image-editor
-
Allow saving only as a copyĐang mởtype: enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
nextcloud-libraries/nextcloud-image-editor#76 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
type: enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
nextcloud-libraries/nextcloud-image-editor#77 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
AI assisted status: triage type: enhancement
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
nextcloud-libraries/nextcloud-image-editor#58 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
AI assisted type: enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
nextcloud-libraries/nextcloud-image-editor#19 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
AI assisted type: enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
nextcloud-libraries/nextcloud-image-editor#17 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của nextcloud-libraries/nextcloud-image-editor
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
stellar/stellar-dev-skill#151 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Trial & Error: guided Blind offer squeezes on phones and sits under the touch toolbar on iPadĐang mởarea:arcade game ready-for-agent
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
fderuiter/deruiter.dev#2281 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
scope: data grid type: bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
fix(frontend): correct VITE_IS_DEVELPOMENT typo in shared/app.ts and align dev environment flagsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
vicharanashala/ajrasakha#1439 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add: TV5Monde AsieĐang mởapproved check:passed streams:add
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày