Skip to content

Commit

Permalink
Merge pull request #146 from radarhere/webp-capsule
Browse files Browse the repository at this point in the history
Added WebP saving test
  • Loading branch information
homm authored Sep 22, 2024
2 parents a988750 + 75cb1c1 commit e86e5d7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
5 changes: 5 additions & 0 deletions Tests/test_file_webp.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,11 @@ def test_save_all(self, tmp_path: Path) -> None:
reloaded.seek(1)
assert_image_similar(im2, reloaded, 1)

def test_unsupported_image_mode(self) -> None:
im = Image.new("1", (1, 1))
with pytest.raises(ValueError):
_webp.WebPEncode(im.getim(), False, 0, 0, "", 4, 0, b"", "")

def test_icc_profile(self, tmp_path: Path) -> None:
self._roundtrip(tmp_path, self.rgb_mode, 12.5, {"icc_profile": None})
self._roundtrip(
Expand Down
5 changes: 2 additions & 3 deletions src/_webp.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,6 @@ HandleMuxError(WebPMuxError err, char *chunk) {

static int
import_frame_libwebp(WebPPicture *frame, Imaging im) {
int drop_alpha = strcmp(im->mode, "RGBA");

if (strcmp(im->mode, "RGBA") && strcmp(im->mode, "RGB") &&
strcmp(im->mode, "RGBX")) {
PyErr_SetString(PyExc_ValueError, "unsupported image mode");
Expand All @@ -106,10 +104,11 @@ import_frame_libwebp(WebPPicture *frame, Imaging im) {
return -2;
}

int ignore_fourth_channel = strcmp(im->mode, "RGBA");
for (int y = 0; y < im->ysize; ++y) {
UINT8 *src = (UINT8 *)im->image32[y];
UINT32 *dst = frame->argb + frame->argb_stride * y;
if (drop_alpha) {
if (ignore_fourth_channel) {
for (int x = 0; x < im->xsize; ++x) {
dst[x] =
((UINT32)(src[x * 4 + 2]) | ((UINT32)(src[x * 4 + 1]) << 8) |
Expand Down

0 comments on commit e86e5d7

Please sign in to comment.