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 Tools Display Modes
  05 May 2011
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?
  05 May 2011
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.
  05 May 2011
The problem is how to getpixel - setpixel only in alpha channel.
See the images:
with alpha channel:

with alpha channel:

Run the script. And swaped alpha channels:
with alpha:
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.
  05 May 2011
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
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
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
Maxscript Made Easy...
  05 May 2011
as i see it doesn't need new set of bitmaps. you can swap original ones.
  05 May 2011
denisT, DaveWortley, thank you very much.
  05 May 2011
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.
CGTalk Policy/Legalities
Note that as CGTalk Members, you agree to the terms and conditions of using this website.
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
Society of Digital Artists

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

All times are GMT. The time now is 05:11 PM.

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