code: func (q *QRCode) PNG(size int) ([]byte, error) {
  	img := q.Image(size)
  
  	encoder := png.Encoder{CompressionLevel: png.BestCompression}
  
  	var b bytes.Buffer
  	err := encoder.Encode(&b, img)
  
  	if err != nil {
  		return nil, err
  	}
  
  	return b.Bytes(), nil
  }
docs: // PNG returns the QR Code as a PNG image.
  //
  // size is both the image width and height in pixels. If size is too small then
  // a larger image is silently returned. Negative values for size cause a
  // variable sized image to be returned: See the documentation for Image().