2017-03-07 11 views
1

我使用下面的字符串生成帶有條形碼的圖像。如何從ios,swift中的字符串獲取高質量的條形碼圖像

class BarCode { 

    class func fromString(string : String) -> UIImage? { 

     let data = string.dataUsingEncoding(NSASCIIStringEncoding) 
     let filter = CIFilter(name: "CICode128BarcodeGenerator") 
     filter!.setValue(data, forKey: "inputMessage") 
     return UIImage(CIImage: filter!.outputImage!) 

    } 
} 

因此,這會生成準確的圖像。但質量很低。我怎麼能提高圖像的質量。(我不能增加圖像的大小,如果我這樣做,所以它看起來喜歡所迷離)

+0

什麼意思之前變換圖像 - 質量低?正如http://stackoverflow.com/questions/28542240/how-to-generate-a-barcode-from-a-string-in-swift所描述的,你會得到一個圖像垂直線1像素寬。如果您獲得的圖像(高32像素)具有1像素寬的線條,很難看出您如何獲得更清晰的圖像 - 看起來像您的問題在於如何放大圖像 – Russell

回答

1

CIImage是轉換爲UIImage它是這樣做的,其固定大小由CIImage決定,如果您隨後嘗試縮放此圖像,比如將它分配給UIImageView,那麼您將獲得與放大位圖相關的典型像素化。

其分配到的UIImage

if let barImage = filter.outputImage { 
    let transform = CGAffineTransformMakeScale(5.0, 5.0) 
    let scaled = barImage.imageByApplyingTransform(transform) 
    return(UIImage(CIImage: scaled)) 
} 
+0

我們可以使用的最大比例尺是多少 – Jobs

+0

據我所知,唯一的限制是'CGFloat'的最大值。轉換應用於生成過程,因此如果在圖像位圖 – Paulw11

+0

之後對其進行縮放,質量不會受到影響。爲我工作 – Jobs

0

嘗試transform,使其做大

let transform = CGAffineTransform(scaleX: 3, y: 3) 

    if let output = filter.outputImage?.applying(transform) { 
     return UIImage(ciImage: output) 
    } 
相關問題