Fix crash when saving compressed image as JPG & WebP
This commit is contained in:
parent
e38686f85b
commit
c07cd406cb
|
@ -156,7 +156,11 @@ public:
|
||||||
|
|
||||||
static Error _jpgd_save_to_output_stream(jpge::output_stream *p_output_stream, const Ref<Image> &p_img, float p_quality) {
|
static Error _jpgd_save_to_output_stream(jpge::output_stream *p_output_stream, const Ref<Image> &p_img, float p_quality) {
|
||||||
ERR_FAIL_COND_V(p_img.is_null() || p_img->is_empty(), ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(p_img.is_null() || p_img->is_empty(), ERR_INVALID_PARAMETER);
|
||||||
Ref<Image> image = p_img;
|
Ref<Image> image = p_img->duplicate();
|
||||||
|
if (image->is_compressed()) {
|
||||||
|
Error error = image->decompress();
|
||||||
|
ERR_FAIL_COND_V_MSG(error != OK, error, "Couldn't decompress image.");
|
||||||
|
}
|
||||||
if (image->get_format() != Image::FORMAT_RGB8) {
|
if (image->get_format() != Image::FORMAT_RGB8) {
|
||||||
image->convert(Image::FORMAT_RGB8);
|
image->convert(Image::FORMAT_RGB8);
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,10 @@ Vector<uint8_t> _webp_packer(const Ref<Image> &p_image, float p_quality, bool p_
|
||||||
compression_method = CLAMP(compression_method, 0, 6);
|
compression_method = CLAMP(compression_method, 0, 6);
|
||||||
|
|
||||||
Ref<Image> img = p_image->duplicate();
|
Ref<Image> img = p_image->duplicate();
|
||||||
|
if (img->is_compressed()) {
|
||||||
|
Error error = img->decompress();
|
||||||
|
ERR_FAIL_COND_V_MSG(error != OK, Vector<uint8_t>(), "Couldn't decompress image.");
|
||||||
|
}
|
||||||
if (img->detect_alpha()) {
|
if (img->detect_alpha()) {
|
||||||
img->convert(Image::FORMAT_RGBA8);
|
img->convert(Image::FORMAT_RGBA8);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue