How do I use the unpack function?

Gary Herron gherron at islandtraining.com
Thu May 15 12:11:23 EDT 2008


Marlin Rowley wrote:
> All:
>
> I've got a script that runs really slow because I'm reading from a 
> stream a byte at a time:
>
> // TERRIBLE
> for y in range( height ):
>         for color in range(4):
>             for x in range( width ):
>                 pixelComponent = fileIO.read(4)
>                 buffer = unpack("!f",pixelComponent)  << unpacks ONE 
> float, but we now can do something with that pixel component.
>
>
> I can speed this up dramatically if I did this:
>
> // MUCH FASTER
> for y in range( height ):
>     for color in range(4):
>        pixelComponent = fileIO.read(4*width) <<<<<<<<<  GET a LOT more 
> data from the stream into memory FIRST!!
>        for x in range( width ):
>            buffer = unpack( ?????? ) <<<< how do I get each float from 
> the pixelComponent???

Just carve of the first four bytes of pixelComponent on each pass 
through the loop, and unpack that.

for x in range(width):
  fourbytes = pixelComponent[:4]   # first 4 bytes
  pixelComponent = pixelComponent[4:]  # All but first four bytes
  buffer = unpack("!f", fourbytes)


There are probably better ways overall, but this directly answers your 
question.

Gary Herron


>
>
> -M
> ------------------------------------------------------------------------
> With Windows Live for mobile, your contacts travel with you. Connect 
> on the go. 
> <http://www.windowslive.com/mobile/overview.html?ocid=TXT_TAGLM_WL_Refresh_mobile_052008> 
>
> ------------------------------------------------------------------------
>
> --
> http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list