View Full Version : Swap alpha channel of 2 images- is it possible?
05 May 2011, 10:57 AM
Is there a way to get 2 different images and swap its alpha channel?
img1 have alpha1
img2 have alpha2
-run the script
img1 have alpha2
img2 have alpha1
Is it possible via maxscript?
05 May 2011, 11:04 AM
where is the problem? getpixels - setpixels... or you want to do anything more specific?
you can use pastebitmap with function method... but i'm not sure that this method will be faster.
05 May 2011, 11:24 AM
The problem is how to getpixel - setpixel only in alpha channel.
See the images:
http://img12.imageshack.us/img12/7269/img1up.pngwith alpha channel:http://img822.imageshack.us/img822/7098/img1alpha.png
http://img405.imageshack.us/img405/5333/img2zb.pngwith alpha channel:http://img848.imageshack.us/img848/4395/img2alpha.png
Run the script. And swaped alpha channels:
How to access only the alpha channel? The getpixel and setpixel was my first thoudht, but I can't find the way to change(swap) pixels only in the alpha channles.
05 May 2011, 11:41 AM
when you get pixels there are arrays of RGBA colors.
go through all pixels and swap just Alpha components:
for k=1 to colors1.count do swap colors1[k].a colors2[k].a
something like that. if it's not working for colors (but i don't see a reason why it shouldn't work) you can convert colors to point4...
05 May 2011, 11:52 AM
I'm doing too much production work, missing maxscript, so here's a quick solution for you....
--Our two files to swap Alphs
fileA = "c:\\ImageA.tga"
fileB = "c:\\ImageB.tga"
--open both files at bitmap values
thebmpA = openbitmap fileA
thebmpB = openbitmap fileB
--create new temporary bitmaps to put new images in
newBmpA = bitmap thebmpA.width thebmpA.height
newBmpB = bitmap thebmpB.width thebmpB.height
--for every line of pixels do
for i = 1 to thebmpA.height do
--get a line of pixels for both images as an Array of Point4 values
AR_thepixels_A = Getpixels thebmpA [0,i] thebmpA.width
AR_thepixels_B = Getpixels thebmpB [0,i] thebmpB.width
--for every Point4 value in the array, swap the alpha value from A to B
for j = 1 to AR_thepixels_A.count do
swap AR_thepixels_A[j].a AR_thepixels_B[j].a
--write these new values to the new images
setpixels newbmpA [0,i] AR_thepixels_A
setpixels newbmpB [0,i] AR_thepixels_B
--close the original images so we can overwrite them
--give the new images the same filenames as the originals
newBmpA.filename = fileA
newBmpB.filename = fileB
--save the new images
--close the new images
--I always chuck in a Garbage collection here to free up memory
05 May 2011, 12:06 PM
as i see it doesn't need new set of bitmaps. you can swap original ones.
05 May 2011, 03:18 PM
denisT (http://forums.cgsociety.org/member.php?u=384956), DaveWortley, thank you very much. :)
05 May 2011, 03:18 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.