Swap alpha channel of 2 images- is it possible?

Become a member of the CGSociety

Connect, Share, and Learn with our Large Growing CG Art Community. It's Free!

THREAD CLOSED
 
Thread Tools Search this Thread Display Modes
Old 05 May 2011   #1
Swap alpha channel of 2 images- is it possible?

Is there a way to get 2 different images and swap its alpha channel?
For example:
img1 have alpha1
img2 have alpha2
-run the script
img1 have alpha2
img2 have alpha1

Is it possible via maxscript?
 
Old 05 May 2011   #2
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.

Last edited by denisT : 05 May 2011 at 11:08 AM.
 
Old 05 May 2011   #3
The problem is how to getpixel - setpixel only in alpha channel.
See the images:
img1
with alpha channel:

img2
with alpha channel:

Run the script. And swaped alpha channels:
img1
with alpha:
img2
with alpha:

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.
 
Old 05 May 2011   #4
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...
 
Old 05 May 2011   #5
I'm doing too much production work, missing maxscript, so here's a quick solution for you....

Dave

Code:
--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 close thebmpA close thebmpB --give the new images the same filenames as the originals newBmpA.filename = fileA newBmpB.filename = fileB --save the new images Save newBmpA Save newBmpB --close the new images Close NewBmpA Close NewBmpB --I always chuck in a Garbage collection here to free up memory gc()
__________________
Maxscript Made Easy...
http://davewortley.wordpress.com/
 
Old 05 May 2011   #6
as i see it doesn't need new set of bitmaps. you can swap original ones.
 
Old 05 May 2011   #7
denisT, DaveWortley, thank you very much.
 
Old 05 May 2011   #8
Thread automatically closed

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.
 
Thread Closed share thread



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
CGSociety
Society of Digital Artists
www.cgsociety.org

Powered by vBulletin
Copyright 2000 - 2006,
Jelsoft Enterprises Ltd.
Minimize Ads
Forum Jump
Miscellaneous

All times are GMT. The time now is 02:24 PM.


Powered by vBulletin
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.