GeClipMap alpha [SOLVED]
-
On 19/11/2016 at 11:13, xxxxxxxx wrote:
Hi I would like to import tiff with alpha into a Geclip and still got this alpha but I didn't sucess.
Thanks in advance here is a little code for testing.import c4d def main() : path = "C:\\Program Files\\MAXON\\CINEMA 4D R17\\plugins\\MyPlugin\\res\\add2.tif" #On init un bitmap ave l'image temp = c4d.bitmaps.BaseBitmap() if temp.InitWith(path)[0] != c4d.IMAGERESULT_OK: return False size = temp.GetBw() alpha = temp.GetInternalChannel() #Initialize GeClipMap cm = c4d.bitmaps.GeClipMap() cm.InitWithBitmap(temp,alpha) cm.BeginDraw() #Some test for rewritting alpha if alpha: for y in xrange(size) : for x in xrange(size) : a = temp.GetAlphaPixel(alpha,x,y) r,g,b = temp.GetPixel(x,y) cm.SetPixelRGBA(x, y, r, g, b,a) #draw a square cm.SetDrawMode(c4d.GE_CM_DRAWMODE_BLEND, 255) cm.SetColor(150, 150, 150, 150) size_pic = cm.GetBw() height_pic = cm.GetBh() cm.FillRect(0, height_pic - (size/6), size_pic,height_pic ) cm.EndDraw() #Get bitmap bmp = cm.GetBitmap().GetClone() cm.Destroy() c4d.bitmaps.ShowBitmap(bmp) if __name__=='__main__': main()
-
On 21/11/2016 at 03:00, xxxxxxxx wrote:
Hello,
the BaseBitmap returned by GetBitmap() does not include the alpha channel (see documentation). Also the Picture Viewer would not display the alpha channel.
So as far as I can see you have to copy the alpha channel manually.
# clone bitmap bitmap = clipMap.GetBitmap().GetClone() # add alpha channel alphaChannel = bitmap.AddChannel(True, False) # copy alpha clipMap.BeginDraw() for x in xrange(clipMapWidth) : for y in xrange(clipMapHeight) : r,g,b,a = clipMap.GetPixelRGBA(x,y) bitmap.SetAlphaPixel(alphaChannel, x, y, a) clipMap.EndDraw() # save bitmap with alpha saveImageFile = c4d.storage.SaveDialog(type=c4d.FILESELECTTYPE_IMAGES,title="Save as PNG") if saveImageFile is not None: bitmap.Save(name = saveImageFile,format = c4d.FILTER_PNG,data = None, savebits =c4d.SAVEBIT_ALPHA)
best wishes,
Sebasitan -
On 21/11/2016 at 05:35, xxxxxxxx wrote:
Thanks you was a missunderstand from me.
I thinked alpha was not copied into the GeClip.Anyway thanks you now all is working as excepted !