diff --git a/include/Frame.h b/include/Frame.h index c9661336..0c577299 100644 --- a/include/Frame.h +++ b/include/Frame.h @@ -81,6 +81,9 @@ namespace openshot /// Experimental method to add effects to this frame void AddEffect(string name); + /// Experimental method to add overlay images to this frame + void AddOverlay(Frame* frame); + /// Clear the waveform image (and deallocate it's memory) void ClearWaveform(); @@ -111,6 +114,9 @@ namespace openshot /// Get the audio sample rate int GetAudioSamplesRate(); + /// Get pointer to Magick++ image object + Magick::Image* GetImage(); + /// Get pixel data (as packets) const Magick::PixelPacket* GetPixels(); diff --git a/src/Frame.cpp b/src/Frame.cpp index 5e706154..9d6a8605 100644 --- a/src/Frame.cpp +++ b/src/Frame.cpp @@ -502,6 +502,22 @@ void Frame::AddEffect(string name) image->swirl(30.0); } +// Experimental method to add overlay images to this frame +void Frame::AddOverlay(Frame* frame) +{ + // Get overlay image (if any) + Magick::Image* overlay = frame->GetImage(); + + // Composite image onto this image + image->composite(*overlay, Magick::SouthEastGravity, Magick::OverCompositeOp); +} + +// Get pointer to Magick++ image object +Magick::Image* Frame::GetImage() +{ + return image; +} + // Play audio samples for this frame void Frame::Play() { diff --git a/src/Main.cpp b/src/Main.cpp index 8d7fd375..db45fca7 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -14,11 +14,9 @@ void FrameReady(int number) int main() { - openshot::ImageReader i("/home/jonathan/Documents/OpenShot Art/icon.png"); - openshot::Frame* f = i.GetFrame(1); + openshot::ImageReader i("/home/jonathan/Apps/videcho_site/media/logos/watermark3.png"); + openshot::Frame* overlay = i.GetFrame(1); i.DisplayInfo(); - f->Display(); - i.Close(); // openshot::FFmpegReader r("../../src/examples/test.mp4"); // openshot::FFmpegReader r("../../src/examples/test1.mp4"); @@ -72,9 +70,10 @@ int main() //Frame *f = r.GetFrame(1); - for (int frame = 1; frame <= 1000; frame++) + for (int frame = 1; frame <= 300; frame++) { Frame *f = r.GetFrame(frame); + f->AddOverlay(overlay); //if (f->number == 307 || f->number == 308 || f->number == 309 || f->number == 310) //f->DisplayWaveform(); @@ -93,6 +92,7 @@ int main() // Close writer & reader w.Close(); r.Close(); + i.Close(); cout << "Successfully executed Main.cpp!" << endl;