|
1 | 1 | use core::convert::{From, Into};
|
2 | 2 |
|
3 |
| -use image as image_rs; |
4 | 3 | use skia_safe::{EncodedImageFormat, Point, RCHandle, Rect};
|
5 | 4 |
|
6 | 5 | use crate::common::context::image_asset::ImageAsset;
|
@@ -224,22 +223,28 @@ pub(crate) fn create_image_bitmap(
|
224 | 223 | .canvas()
|
225 | 224 | .draw_image(&image, (source_rect.x(), source_rect.y()), Some(&paint));
|
226 | 225 |
|
227 |
| - let resize_info = image_info.with_dimensions((out_width as i32, out_height as i32)); |
228 | 226 | let image = surface.image_snapshot();
|
| 227 | + let data; |
| 228 | + if image.width() != out_width && image.height() != out_height { |
| 229 | + let resize_info = image_info.with_dimensions((out_width as i32, out_height as i32)); |
229 | 230 |
|
230 |
| - let mut bytes = vec![0_u8; (out_width * out_height * 4.) as usize]; |
231 |
| - let mut pixel_map = skia_safe::Pixmap::new( |
232 |
| - &resize_info, |
233 |
| - bytes.as_mut_slice(), |
234 |
| - (out_width * 4.) as usize, |
235 |
| - ); |
236 |
| - image.scale_pixels( |
237 |
| - &pixel_map, |
238 |
| - ImageBitmapResizeQuality::from(resize_quality).to_quality(), |
239 |
| - None, |
240 |
| - ); |
| 231 | + let mut bytes = vec![0_u8; (out_width * out_height * 4.) as usize]; |
| 232 | + let mut pixel_map = skia_safe::Pixmap::new( |
| 233 | + &resize_info, |
| 234 | + bytes.as_mut_slice(), |
| 235 | + (out_width * 4.) as usize, |
| 236 | + ); |
| 237 | + image.scale_pixels( |
| 238 | + &pixel_map, |
| 239 | + ImageBitmapResizeQuality::from(resize_quality).to_quality(), |
| 240 | + None, |
| 241 | + ); |
| 242 | + |
| 243 | + data = pixel_map.encode(EncodedImageFormat::PNG, 100); |
| 244 | + } else { |
| 245 | + data = image.encode_to_data(EncodedImageFormat::PNG); |
| 246 | + } |
241 | 247 |
|
242 |
| - let data = pixel_map.encode(EncodedImageFormat::PNG, 100); |
243 | 248 | if let Some(data) = data {
|
244 | 249 | output.load_from_bytes(data.as_bytes());
|
245 | 250 | };
|
|
0 commit comments