refactor(imaging): replace ImageSharp with SkiaSharp in Core/Imaging - #191
Merged
Merged
Conversation
…e/Imaging ImageSharp 4.x requires a paid Six Labors license, so the imaging stack moves to SkiaSharp 3.119.4, which Avalonia 12.1.1 already ships. All SkiaSharp code lives in Core/Imaging; no other app file references it. - ImageCodec: decode, mipmapped resize, 8-bit RGB PNG and JPEG encode - ImageResizing: resolution cap, 600px thumbnails, square icon resize - WallpaperAnnotator: outlined title (stroke pass then fill pass, fontSize/12 with a 1px floor) and debug timestamp, same positions - WallpaperRenderer: PNG first, JPEG fallback from quality 97 over 16 MB, with the size ceiling injectable for tests - MenuIcons: the four 16px tray menu icons - BundledFonts: embedded Cinzel plus installed families via Skia's font manager Removes SixLabors.ImageSharp and ImageSharp.Drawing from both projects and the Dependabot ignore rule that held ImageSharp at 3.x. Adds imaging-layer tests. Refs #181 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CLAUDE.md gains the Core/Imaging rule and folder, and the dependency list, wallpaper processing and tray icon notes now name SkiaSharp. README and the website tech list drop ImageSharp. Refs #181 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Skia's plain DrawText ignores the font's kerning table, so pairs such as "AV" and "TA" in wallpaper titles sat visibly apart after the move off ImageSharp. WallpaperAnnotator now draws the title and timestamp through SKShaper, keeping the stroke-then-fill passes, the ascent-based top edge, and right alignment measured from the shaped width. SkiaSharp.HarfBuzz is pinned at 3.119.2: it is the only release that resolves HarfBuzzSharp 8.3.1.3, the native library Avalonia 12.1.1 ships (3.119.4 needs 8.3.1.5). Dependabot ignores it until Avalonia moves. CLAUDE.md dependencies now list it and correct Hosting to 10.0.11. Refs #181 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #181
Replaces SixLabors.ImageSharp and ImageSharp.Drawing with SkiaSharp. ImageSharp 4.x fails the build without a Six Labors license key.
Core/Imaging/): all image decoding, encoding, resizing and drawing lives here: resize-to-fit, gallery thumbnails, icon scaling, the tray menu icons, wallpaper annotation, PNG encoding with the JPEG fallback, and font lookup. No other app file references SkiaSharp. CLAUDE.md records the rule.Verification
main. 241 tests pass, 28 of them new.current.pngis 3840×2160 8-bit RGB, with the title in Cinzel at the top left, and the desktop applied it. The launcher icon and the four tray menu icons draw correctly.🤖 Generated with Claude Code