summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/raylib.h3
-rw-r--r--src/textures.c12
2 files changed, 14 insertions, 1 deletions
diff --git a/src/raylib.h b/src/raylib.h
index 29cc5728..ee0d8ccc 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -835,7 +835,7 @@ RLAPI bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Ve
// Texture Loading and Drawing Functions (Module: textures)
//------------------------------------------------------------------------------------
-// Image/Texture2D data loading/unloading functions
+// Image/Texture2D data loading/unloading/saving functions
RLAPI Image LoadImage(const char *fileName); // Load image from file into CPU memory (RAM)
RLAPI Image LoadImageEx(Color *pixels, int width, int height); // Load image from Color array data (RGBA - 32bit)
RLAPI Image LoadImagePro(void *data, int width, int height, int format); // Load image from raw data with parameters
@@ -849,6 +849,7 @@ RLAPI void UnloadRenderTexture(RenderTexture2D target);
RLAPI Color *GetImageData(Image image); // Get pixel data from image as a Color struct array
RLAPI Image GetTextureData(Texture2D texture); // Get pixel data from GPU texture and return an Image
RLAPI void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data
+RLAPI void SaveImageAs(Image image, const char *fileName); // Save image to a PNG file
// Image manipulation functions
RLAPI void ImageToPOT(Image *image, Color fillColor); // Convert image to POT (power-of-two)
diff --git a/src/textures.c b/src/textures.c
index 99392516..f1fcb12c 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -553,6 +553,18 @@ void UpdateTexture(Texture2D texture, const void *pixels)
rlglUpdateTexture(texture.id, texture.width, texture.height, texture.format, pixels);
}
+// Save image to a PNG file
+void SaveImageAs(Image image, const char *fileName)
+{
+#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI)
+ unsigned char* imgData = (unsigned char*)GetImageData(image); // this works since Color is just a container for the RGBA values
+ SavePNG(fileName, imgData, image.width, image.height, 4);
+ free(imgData);
+
+ TraceLog(INFO, "Image saved: %s", fileName);
+#endif
+}
+
// Convert image data to desired format
void ImageFormat(Image *image, int newFormat)
{