-
Notifications
You must be signed in to change notification settings - Fork 378
feat: allow providing background color when transforming images with alpha channel to a format without it #3800
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
f88f380
feat: allow providing backgroundColor when transforming png/webp to i…
szuperaz b000de7
fix(review): change background color type; expose proper type for CLI…
szuperaz f019188
fix: reword misleading code comment
szuperaz 11a9ac1
fix: more review fixes
szuperaz 9f1c269
fix: avoid unnecessary Android memory increase; remove unnecessary al…
szuperaz fa101c2
fix: avoid duplicate bitmap on android
szuperaz 7a76e6a
fix: force opaque color for backgroundColor
szuperaz bfef06e
fix: remove unnecessary alpha check from android
szuperaz 704c7c8
feat: use white as the default background color
szuperaz File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
44 changes: 44 additions & 0 deletions
44
package/expo-package/src/handlers/__tests__/compressImage.test.ts
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| describe('expo compressImage', () => { | ||
| const manipulateAsync = jest.fn(); | ||
|
|
||
| const loadHandler = () => { | ||
| jest.doMock('expo-image-manipulator', () => ({ manipulateAsync }), { virtual: true }); | ||
|
|
||
| return require('../compressImage').compressImage as (params: { | ||
| compressImageQuality: number; | ||
| uri: string; | ||
| }) => Promise<string>; | ||
| }; | ||
|
|
||
| beforeEach(() => { | ||
| manipulateAsync.mockResolvedValue({ uri: 'file:///cache/out.jpg' }); | ||
| }); | ||
|
|
||
| afterEach(() => { | ||
| jest.resetModules(); | ||
| jest.clearAllMocks(); | ||
| }); | ||
|
|
||
| it('ignores a background colour rather than forwarding one', async () => { | ||
| // Deliberate asymmetry: backgroundColor is CLI-only. expo-image-manipulator can only fill a | ||
| // background while *extending* an image and marks that option @platform web, so there is no | ||
| // way to honour it here. | ||
| // | ||
| // The *type-level* guarantee (passing one is a compile error) is enforced by tsc over `src`, | ||
| // not by this file - expo-package/tsconfig.json excludes `**/__tests__`, so a | ||
| // `@ts-expect-error` here would never be verified and would only look like a guarantee. | ||
| // What this test pins is the runtime half: nothing reaches ImageManipulator. | ||
| const compressImage = loadHandler(); | ||
|
|
||
| await compressImage({ | ||
| compressImageQuality: 0.5, | ||
| uri: 'file:///in.png', | ||
| ...({ backgroundColor: '#FFFFFF' } as Record<string, never>), | ||
| }); | ||
|
|
||
| expect(manipulateAsync).toHaveBeenCalledWith('file:///in.png', [], { compress: 0.5 }); | ||
| const [, , options] = manipulateAsync.mock.calls[0]; | ||
| expect(options).not.toHaveProperty('backgroundColor'); | ||
| expect(Object.keys(options)).toEqual(['compress']); | ||
| }); | ||
| }); |
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
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
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.