rebol [] images: [ rebol_tutorial/invaders.jpg rebol_tutorial/ski_game.jpg rebol_tutorial/r3D.png rebol_tutorial/gcdm.png rebol_tutorial/web_cam.png rebol_tutorial/demo5a.jpg rebol_tutorial/demo5.jpg rebol_tutorial/calendar.png rebol_tutorial/little_email_client.png rebol_tutorial/chat_room.png rebol_tutorial/ftp_tool.jpg rebol_tutorial/calc.png rebol_tutorial/paint.jpg rebol_tutorial/listview_database_a.png rebol_tutorial/menu.png rebol_tutorial/image_effector.png rebol_tutorial/textris.png rebol_tutorial/freecell2.png ] unused: [rebol_tutorial/instant_messenger.png] y-size: 200 ; height to resize each image to mosaic-size: 600 ; width of mosaic to create padding: 30 ; space between images mosaic: copy reduce ['backcolor 'white 'space padding 'across] foreach picture images [ original: to-image layout/tight [image load to-file picture] either original/size/2 > y-size [ new-x-factor: y-size / original/size/2 new-x-size: round original/size/1 * new-x-factor new-y: to-image layout/tight [ image original to-pair rejoin [new-x-size "x" y-size] ] ; view layout/tight [image new-y] append mosaic reduce ['image new-y] ][ append mosaic reduce ['image original] ] current-layout: layout/tight mosaic if current-layout/size/1 > mosaic-size [ insert back back tail mosaic reduce ['return] ] ] filename: to-file request-file/file/save "mosaic.png" save/png filename to-image layout mosaic ; view layout mosaic view layout [image load filename]