[REBOL] Manipulating Images - Newbie question
From: kalefb::nortelnetworks::com at: 16-Aug-2001 13:31
I have been attempting to modify Carl's viewer.r script to allow me to
create a button that will Rotate and then save the selected image in it's
rotated state.
My problem is that when I save the image, the rotation that is being
displayed using /View doesn't actually save out to the file. I am not clear
on how to modify the actual image as opposed to just the 'effect on the
face. I hope this is clear.
Below is Carl's code with my addition of the Rotate button.
Thanks.
Brock Kalef
-- A wanna be Rebol'er --
------------x snip x-----------
REBOL [
Title: "Image Viewer"
File: %viewer.r
Date: 20-May-2000
Author: "Carl Sassenrath"
Purpose: {
A useful image viewer that shows all the jpeg, gif, bmp, png
images found in the current directory.
}
Enhancements: {
I would like to make this into a quick app to view, rotate, rename
and save pictures from a digital camera. Also allow for random
image playback.
* button to rotate then auto-save
* allow to change and auto-save name - if changed
* Random button to allow for random image playback when only the
'next' button is pressed. Would require a memory of the images
displayed.
}
Category: [view VID 3]
]
page-size: 800x600
image-file?: func ["Returns true if file is an image" file] [
find [%.bmp %.jpg %.jpeg %.gif %.png] find/last file "."
]
files: read %. ;-- Read local file list, but want just image files...
while [not tail? files] [
either image-file? first files [files: next files][remove files]
]
files: head files
if empty? files [
inform layout [backdrop 140.0.0 text bold "No images found"]
do-events quit
]
view layout [
size page-size
origin 10x10
img: image page-size - 20x50 first files effect none ; -- Face used to
display image
across at page-size * 0x1 + 10x-30
arrow left 24x24 keycode 'left [
files: back files
name/text: first files show name
img/image: load first files show img
;img/effect: [none] show img
]
arrow right 24x24 keycode 'right [
if tail? files: next files [files: back files]
name/text: first files show name
img/image: load first files show img
img_ref: load first files
;img/effect: [none] show img
]
rt8: toggle "Rotate" keycode 'up [
; img/image: img_ref effect rotate 90 show img
img/effect: either rt8/state [[rotate 90]][none] show img
save/png %atestimage.png to-image img
]
tgl: toggle "Scale" [
img/effect: either tgl/state ['aspect][none] show img
]
button "Quit" #"^(ESC)" [quit]
name: field 300x24 form first files
]