docs: def save(self, file):
          """
          Save the image to *file*.
  
          If *file* looks like an open file
          descriptor then it is used, otherwise it is treated as a
          filename and a fresh file is opened.
  
          In general, you can only call this method once; after it has
          been called the first time and the PNG image has been saved, the
          source data will have been streamed, and cannot be streamed
          again.
          """
          w = Writer(**self.info)
  
          try:
              file.write
  
              def close():
                  pass
          except AttributeError:
              file = open(file, 'wb')
  
              def close():
                  file.close()
  
          try:
              w.write(file, self.rows)
          finally:
              close()