Writing 32 color information to ByteSeq



  • On 17/06/2013 at 03:08, xxxxxxxx wrote:

    I'm trying to partly copy 32 bit images.
    Copying a part of an image to another images is working.
    However, when I tried to set my own 32 bit pixel color information it goes wrong.

    I do not know how to initialize the byteseq with 32 bit color information.
    I tried this, but it comes out all black. No color information.

    What I do:
    - create a byteseq for 1 pixel. 32 bits x 3 colors = 96 bits = 12 bytes
    - fill the byteseq with R=0xFFFFFFFF, G=0, B=0xFF
    - write the pixel to the image, but no colors. Everything is black

        b12 = storage.ByteSeq(None, 12)                     	# size = 12 bytes = 1 pixel
        b12[0:4]  = chr(255)*4                              		# 0xFFFFFFFF
        b12[4:8]  = chr(0)*4                                		# 0x00000000
        b12[8:12] = chr(0) + chr(0) + chr(0) + chr(255)     # 0x000000FF
      
        #copy to image 
        for row in range(100,400) :
            for x in range (200,800) :
                #offset = b12.GetOffset(0)                  #offset in byteseq
                pixels2copy = 1
                copy.SetPixelCnt(x, row, pixels2copy, b12, inc, c4d.COLORMODE_RGBf, c4d.PIXELCNT_0) # Set pixels in bitmap copy
        
      
        bitmaps.ShowBitmap(copy) # Show copied image
    


  • On 17/06/2013 at 07:20, xxxxxxxx wrote:

    This seems to work.
    One thing that puzzles me, is the format of the value I can give.
    0xffffffff, 0.9999, 1.0, it is all ok.

        b12 = storage.ByteSeq(None, 12)
        b12[0:4]  = struct.pack("f", 0xffffffff)            # R
        b12[4:8]  = struct.pack("f", 0.9999)                # G
        b12[8:12] = struct.pack("f", 1.0)                   # B
    

Log in to reply