summaryrefslogtreecommitdiff
path: root/Userland/Applications/PixelPaint/Image.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Applications/PixelPaint/Image.cpp')
-rw-r--r--Userland/Applications/PixelPaint/Image.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/Userland/Applications/PixelPaint/Image.cpp b/Userland/Applications/PixelPaint/Image.cpp
index 09a075dfe0..01f202cce4 100644
--- a/Userland/Applications/PixelPaint/Image.cpp
+++ b/Userland/Applications/PixelPaint/Image.cpp
@@ -34,6 +34,7 @@
#include <LibGUI/Painter.h>
#include <LibGfx/BMPWriter.h>
#include <LibGfx/ImageDecoder.h>
+#include <LibGfx/PNGWriter.h>
#include <stdio.h>
//#define PAINT_DEBUG
@@ -153,6 +154,19 @@ void Image::export_bmp(const String& file_path)
fclose(file);
}
+void Image::export_png(const String& file_path)
+{
+ auto bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::RGBA32, m_size);
+ GUI::Painter painter(*bitmap);
+ paint_into(painter, { 0, 0, m_size.width(), m_size.height() });
+
+ Gfx::PNGWriter png_writer;
+ auto png = png_writer.write(bitmap);
+ auto file = fopen(file_path.characters(), "wb");
+ fwrite(png.data(), sizeof(u8), png.size(), file);
+ fclose(file);
+}
+
void Image::add_layer(NonnullRefPtr<Layer> layer)
{
for (auto& existing_layer : m_layers) {