Skip to content

Commit 82593f3

Browse files
Merge pull request #161 from xweskingx/#145
#145 - Some convolution filters are not working
2 parents d817f1c + 3a8f0c8 commit 82593f3

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

crate/src/conv.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use crate::helpers;
44
use crate::PhotonImage;
55
use image::DynamicImage::ImageRgba8;
6+
use image::{GenericImage, GenericImageView, Pixel};
67
use std::cmp::min;
78

89
#[cfg(feature = "enable_wasm")]
@@ -17,6 +18,18 @@ fn conv(photon_image: &mut PhotonImage, kernel: Kernel) {
1718
let mut filtered_img = img.filter3x3(&kernel);
1819
filtered_img = ImageRgba8(filtered_img.to_rgba8());
1920

21+
if filtered_img.pixels().all(|p| p.2[3] == 0) {
22+
for x in 0..GenericImageView::width(&img) - 1 {
23+
for y in 0..GenericImageView::height(&img) - 1 {
24+
let mut pixel = GenericImageView::get_pixel(&filtered_img, x, y);
25+
let original_alpha =
26+
GenericImageView::get_pixel(&img, x, y).channels()[3];
27+
pixel.channels_mut()[3] = original_alpha;
28+
filtered_img.put_pixel(x, y, pixel);
29+
}
30+
}
31+
}
32+
2033
photon_image.raw_pixels = filtered_img.to_bytes();
2134
}
2235

0 commit comments

Comments
 (0)