summaryrefslogtreecommitdiffhomepage
path: root/src/textures.c
diff options
context:
space:
mode:
authorRay <[email protected]>2018-09-17 16:56:02 +0200
committerRay <[email protected]>2018-09-17 16:56:02 +0200
commitec5c9686b3afef5fb2c147fc9786b6890c025dd9 (patch)
tree3cf23b81c4cf04d54c7c580c8d085c1185572ee7 /src/textures.c
parent3a1a4895454f33bea4c33a294050a88cf76d78f4 (diff)
downloadraylib-ec5c9686b3afef5fb2c147fc9786b6890c025dd9.tar.gz
raylib-ec5c9686b3afef5fb2c147fc9786b6890c025dd9.zip
Improved data export capabilities!
REVIEWED: ExportImage() REVIEWED: ExportMesh() ADDED: ExportWave() REMOVED: Internal funcs: SavePNG(), SaveBMP() NOTE: These changes break the API (parameters order)
Diffstat (limited to 'src/textures.c')
-rw-r--r--src/textures.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/textures.c b/src/textures.c
index 9e86af92..7abbaf53 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -19,6 +19,9 @@
* Selecte desired fileformats to be supported for image data loading. Some of those formats are
* supported by default, to remove support, just comment unrequired #define in this module
*
+* #define SUPPORT_IMAGE_EXPORT
+* Support image export in multiple file formats
+*
* #define SUPPORT_IMAGE_MANIPULATION
* Support multiple image editing functions to scale, adjust colors, flip, draw on images, crop...
* If not defined only three image editing functions supported: ImageFormat(), ImageAlphaMask(), ImageToPOT()
@@ -103,6 +106,11 @@
// NOTE: Used to read image data (multiple formats support)
#endif
+#if defined(SUPPORT_IMAGE_EXPORT)
+ #define STB_IMAGE_WRITE_IMPLEMENTATION
+ #include "external/stb_image_write.h" // Required for: stbi_write_bmp(), stbi_write_png()
+#endif
+
#if defined(SUPPORT_IMAGE_MANIPULATION)
#define STB_IMAGE_RESIZE_IMPLEMENTATION
#include "external/stb_image_resize.h" // Required for: stbir_resize_uint8()
@@ -706,15 +714,25 @@ void UpdateTexture(Texture2D texture, const void *pixels)
rlUpdateTexture(texture.id, texture.width, texture.height, texture.format, pixels);
}
-// Export image as a PNG file
-void ExportImage(const char *fileName, Image image)
+// Export image data to file
+// NOTE: File format depends on fileName extension
+void ExportImage(Image image, const char *fileName)
{
+ int success = 0;
+
// NOTE: Getting Color array as RGBA unsigned char values
unsigned char *imgData = (unsigned char *)GetImageData(image);
- // NOTE: SavePNG() not supported by some platforms: PLATFORM_WEB, PLATFORM_ANDROID
- SavePNG(fileName, imgData, image.width, image.height, 4);
-
+ if (IsFileExtension(fileName, ".png")) success = stbi_write_png(fileName, image.width, image.height, 4, imgData, image.width*4);
+ else if (IsFileExtension(fileName, ".bmp")) success = stbi_write_bmp(fileName, image.width, image.height, 4, imgData);
+ else if (IsFileExtension(fileName, ".tga")) success = stbi_write_tga(fileName, image.width, image.height, 4, imgData);
+ else if (IsFileExtension(fileName, ".jpg")) success = stbi_write_jpg(fileName, image.width, image.height, 4, imgData, 80); // Between 1 and 100
+ else if (IsFileExtension(fileName, ".raw")) { } // TODO: Export raw pixel data
+ else if (IsFileExtension(fileName, ".h")) { } // TODO: Export pixel data as an array of bytes
+
+ if (success != 0) TraceLog(LOG_INFO, "Image exported successfully: %s", fileName);
+ else TraceLog(LOG_WARNING, "Image could not be exported.");
+
free(imgData);
}