[Closed] 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?
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.
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.
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…
I’m doing too much production work, missing maxscript, so here’s a quick solution for you…
Dave
--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()
as i see it doesn’t need new set of bitmaps. you can swap original ones.