mirror of
https://github.com/Relintai/sfw.git
synced 2024-12-20 21:06:49 +01:00
Fix image loading on windows.
This commit is contained in:
parent
f72f2a57df
commit
4be1205010
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,6 +4,7 @@ bin/
|
|||||||
obj/
|
obj/
|
||||||
venv/
|
venv/
|
||||||
.cache/
|
.cache/
|
||||||
|
.vs/
|
||||||
|
|
||||||
build/
|
build/
|
||||||
|
|
||||||
|
@ -54,6 +54,10 @@ void GameScene::input_event(const Ref<InputEvent> &event) {
|
|||||||
fimage->convert(Image::FORMAT_RGBAF);
|
fimage->convert(Image::FORMAT_RGBAF);
|
||||||
fimage->save_hdr("test_image_save.hdr");
|
fimage->save_hdr("test_image_save.hdr");
|
||||||
|
|
||||||
|
Ref<Image> timg = texture->get_data();
|
||||||
|
|
||||||
|
timg->save_png("timg.png");
|
||||||
|
|
||||||
ERR_PRINT("Test images Saved!");
|
ERR_PRINT("Test images Saved!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -300,8 +304,8 @@ void GameScene::render_obj() {
|
|||||||
//camera->set_camera_transform(t);
|
//camera->set_camera_transform(t);
|
||||||
//rot += 0.01;
|
//rot += 0.01;
|
||||||
|
|
||||||
Ref<Image> d = texture->get_data();
|
//Ref<Image> d = texture->get_data();
|
||||||
texture->create_from_image(d);
|
//texture->create_from_image(d);
|
||||||
|
|
||||||
camera->bind();
|
camera->bind();
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "core/hash_map.h"
|
#include "core/hash_map.h"
|
||||||
#include "core/memory.h"
|
#include "core/memory.h"
|
||||||
#include "core/vector3.h"
|
#include "core/vector3.h"
|
||||||
|
#include "core/file_access.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -18,6 +19,7 @@
|
|||||||
#define STB_IMAGE_WRITE_IMPLEMENTATION // stbi_write
|
#define STB_IMAGE_WRITE_IMPLEMENTATION // stbi_write
|
||||||
#define STB_SPRINTF_IMPLEMENTATION // stb_sprintf
|
#define STB_SPRINTF_IMPLEMENTATION // stb_sprintf
|
||||||
#define STB_SPRINTF_NOUNALIGNED // stb_sprintf
|
#define STB_SPRINTF_NOUNALIGNED // stb_sprintf
|
||||||
|
//#define STBI_WRITE_NO_STDIO
|
||||||
//#define STBI_WINDOWS_UTF8
|
//#define STBI_WINDOWS_UTF8
|
||||||
//#define STBIW_WINDOWS_UTF8
|
//#define STBIW_WINDOWS_UTF8
|
||||||
|
|
||||||
@ -1411,9 +1413,10 @@ void Image::load_from_file(const String &file_name, Format p_format) {
|
|||||||
|
|
||||||
int img_n = 4;
|
int img_n = 4;
|
||||||
|
|
||||||
FILE *fp = fopen(file_name.utf8().get_data(), "r");
|
Error err;
|
||||||
|
Vector<uint8_t> file_data = FileAccess::get_file_as_array(file_name, &err);
|
||||||
|
|
||||||
ERR_FAIL_COND_MSG(!fp, "Couldn't open file! " + file_name);
|
ERR_FAIL_COND(err != OK);
|
||||||
|
|
||||||
//case FORMAT_RF:
|
//case FORMAT_RF:
|
||||||
//case FORMAT_RGF:
|
//case FORMAT_RGF:
|
||||||
@ -1425,8 +1428,7 @@ void Image::load_from_file(const String &file_name, Format p_format) {
|
|||||||
int y;
|
int y;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
stbi_uc *pixels = stbi_load_from_file(fp, &x, &y, &n, img_n);
|
stbi_uc *pixels = stbi_load_from_memory(file_data.ptr(), file_data.size(), &x, &y, &n, img_n);
|
||||||
fclose(fp);
|
|
||||||
|
|
||||||
ERR_FAIL_COND_MSG(!pixels, "Couldn't load image! " + file_name);
|
ERR_FAIL_COND_MSG(!pixels, "Couldn't load image! " + file_name);
|
||||||
|
|
||||||
@ -1659,14 +1661,24 @@ Error Image::save_png(const String &file_name) {
|
|||||||
|
|
||||||
write_lock = true;
|
write_lock = true;
|
||||||
|
|
||||||
int ret = stbi_write_png(file_name.utf8().get_data(), width, height, pfs, data.ptr(), 0);
|
int out_length = 0;
|
||||||
|
|
||||||
|
uint8_t *ret_arr = stbi_write_png_to_mem(data.ptr(), 0, width, height, pfs, &out_length);
|
||||||
|
|
||||||
write_lock = false;
|
write_lock = false;
|
||||||
|
|
||||||
if (ret == 0) {
|
if (!ret_arr || out_length == 0) {
|
||||||
return FAILED;
|
return FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FileAccess* f = FileAccess::open(file_name, FileAccess::WRITE);
|
||||||
|
|
||||||
|
if (!f) {
|
||||||
|
return FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
f->store_buffer(ret_arr, out_length);
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
Error Image::save_bmp(const String &file_name) {
|
Error Image::save_bmp(const String &file_name) {
|
||||||
|
Loading…
Reference in New Issue
Block a user