summaryrefslogtreecommitdiffstats
path: root/src/mot-encoder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mot-encoder.cpp')
-rw-r--r--src/mot-encoder.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/mot-encoder.cpp b/src/mot-encoder.cpp
index 9abbd0e..e1c965f 100644
--- a/src/mot-encoder.cpp
+++ b/src/mot-encoder.cpp
@@ -905,6 +905,7 @@ size_t resizeImage(MagickWand* m_wand, unsigned char** blob)
size_t height = MagickGetImageHeight(m_wand);
size_t width = MagickGetImageWidth(m_wand);
+ MagickWand *bg_wand = NULL;
PixelWand *p_wand = NULL;
while (height > 240 || width > 320) {
@@ -924,23 +925,28 @@ size_t resizeImage(MagickWand* m_wand, unsigned char** blob)
// Make sure smaller images are 320x240 pixels, and
// add a black border
+ bg_wand = NewMagickWand();
+
p_wand = NewPixelWand();
PixelSetColor(p_wand, "black");
- MagickBorderImage(m_wand, p_wand, (320-width)/2, (240-height)/2);
+ MagickNewImage(bg_wand, 320, 240, p_wand);
DestroyPixelWand(p_wand);
- height = MagickGetImageHeight(m_wand);
- width = MagickGetImageWidth(m_wand);
+ MagickCompositeImage(bg_wand, m_wand, OverCompositeOp, (320-width)/2, (240-height)/2);
- MagickSetImageFormat(m_wand, "jpg");
+
+ height = MagickGetImageHeight(bg_wand);
+ width = MagickGetImageWidth(bg_wand);
+
+ MagickSetImageFormat(bg_wand, "jpg");
int quality = 100;
do {
quality -= 5;
- MagickSetImageCompressionQuality(m_wand, quality);
- *blob = MagickGetImagesBlob(m_wand, &blobsize);
+ MagickSetImageCompressionQuality(bg_wand, quality);
+ *blob = MagickGetImagesBlob(bg_wand, &blobsize);
} while (blobsize > MAXSLIDESIZE && quality > MINQUALITY);
if (blobsize > MAXSLIDESIZE) {
@@ -954,6 +960,8 @@ size_t resizeImage(MagickWand* m_wand, unsigned char** blob)
fprintf(stderr, "mot-encoder resized image to %zu x %zu. Size after compression %zu bytes (q=%d)\n",
width, height, blobsize, quality);
}
+
+ DestroyMagickWand(bg_wand);
return blobsize;
}
#endif