Replace Image to make a slideshow

hi,

I want to make a kind of slideshow which displays Jpeg images. I’m thinking to use Image class. I wrote like this, but it produced instances of Images, I just want to make one image and replace the jpg files.Is there any method to replace the path of Image? or Should I use a different Class?


~imageList = [SCDoc.helpSourceDir +/+ "images/Swamp.png",SCDoc.helpSourceDir +/+ "images/Swamp.png"];

 (
t = Task({
    50.do({ arg i;
			~img = Image.new(~imageList[i% ~imageList.size]);
			~img.plot;

        2.wait;
    });
});
);

t.start(AppClock);

from the help for Pen.drawImage (with a tweak)

( //this first
    w = Window.new.front;
    w.view.background = Color.red;
    i = Image.open(SCDoc.helpSourceDir +/+ "images/Swamp.png");
    j = Image.open(SCDoc.helpSourceDir +/+ "images/SC_icon.png");
    w.drawFunc_({
        Pen.drawImage( Point(140, 140), j, operation: 'sourceOver', opacity:1);
    });

)
( // then this
    w.drawFunc_({
        Pen.drawImage( Point(140, 140), i, operation: 'sourceOver', opacity:1);
    });
    w.refresh;
)
1 Like

Dear semiquaver, Thank you, I made it!


( //this first
~imagePath = [SCDoc.helpSourceDir +/+ "images/Swamp.png",SCDoc.helpSourceDir +/+ "images/SC_icon.png"];
~images = List[];
~imagePath.size.do{arg i ;
	i.postln;
	~images.add(Image.open(~imagePath[i]))
	};

    w = Window.new.front;
    w.view.background = Color.red;

    w.drawFunc_({
	Pen.drawImage( Point(140, 140), ~images[0], operation: 'sourceOver', opacity:1);
    });
)


 ( // then this ... change image every 1 sec
t = Task({
    50.do({ arg i;
			
		w.drawFunc_({
			Pen.drawImage( Point(140, 140), ~images[i%2], operation: 'sourceOver', opacity:1);
			});
		
		w.refresh;
        1.wait;
    });
});
);

t.start(AppClock);