2016-10-02 9 views
1

私はstackoverflowにこのような多くの質問があると知っており、このリンクのように答えがあります:How to convert text to Image?。しかし、私の場合、私は多くの(800以上の画像)UIimageを描画する必要があります。ように私はfolowとしての私の仕事をする場合は、:テキストをUIimageに変換する方法(GPUを使用)

func createImage(text: String, size: CGSize) -> UIImage { 

     let data = text.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
     let drawText = NSString(data: data!, encoding: NSUTF8StringEncoding) 

     let textFontAttributes = [ 
      NSFontAttributeName: UIFont(name: "Helvetica Bold", size: 15)!, 
      NSForegroundColorAttributeName: UIColor.redColor(), 
      ] 

     UIGraphicsBeginImageContextWithOptions(size, false, 0) 
     drawText?.drawInRect(CGRectMake(0, 0, size.width, size.height), withAttributes: textFontAttributes) 
     let newImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return newImage 
    } 

アプリがぎくしゃくを取得するので、非常にゆっくりと〜アプリ実行されます。 GPU accelerationについて聞きましたが、GPUについての経験はありません。これを経験している人なら誰でも画像を描くことができますが(私の機能として)、これを行うにはGPUを使用してください。本当にありがとう!

答えて

-1

UIKitは既にグラフィックアクセラレーションを使用しています。あなたの問題はおそらく、メインスレッド上でこのメソッドを実行しています。

あなたのアプリが他のコンテキストなしで何をすべきか分かっていませんが、このメソッドの実行をバックグラウンドスレッドに移す必要があります。

このように多数の画像を処理する必要がある場合は、NSOperationQueueを使用することを検討してください。 見てください:https://developer.apple.com/reference/foundation/operationqueue

+0

なぜそれがdownvotedになったのですか?私は何らかの理由を見ません、それは正当なアドバイスです。 – davidv

+0

あなたは答えが質問に答えません。問題は、GPUに作業を送ることです。 – naz

関連する問題