defgenerateBarcodeImage(self,barcode_type,data):# huBarcode's DataMatrix support has limitation for data size.# huBarcode's QRCode support is broken.# more 1-D barcode types can be added by pyBarcode library.barcode_type=barcode_type.lower()ifbarcode_type=='datamatrix':fromsubprocessimportPopen,PIPEprocess=Popen(['dmtxwrite'],stdin=PIPE,stdout=PIPE,stderr=PIPE,close_fds=True)output,error=process.communicate(input=data)elifbarcode_type=='ean13':fromhubarcode.ean13importEAN13Encoderencoder=EAN13Encoder(data)output=encoder.get_imagedata()elifbarcode_type=='code128':fromhubarcode.code128importCode128Encoderencoder=Code128Encoder(data)output=encoder.get_imagedata()elifbarcode_type=='qrcode':importqrcodefromcStringIOimportStringIOfp=StringIO()img=qrcode.make(data)img.save(fp,format='png')fp.seek(0)output=fp.read()else:raiseNotImplementedError,'barcode_type=%s is not supported'%barcode_typeRESPONSE=self.REQUEST.RESPONSERESPONSE.setHeader('Content-Type','image/png')RESPONSE.setHeader('Content-Length',len(output))returnoutput