0

画像ビューの一部にテキスト ボックスをオーバーレイする方法については、十分なリソースがあることを知っています。ただし、アップロード時に画像+オーバーレイされたテキストを新しい画像として保存する方法はありますか?

  1. ユーザーが写真を選択すると、画像ビューに画像が表示されます
  2. ユーザーは画像ビューの上にテキストを入力します
  3. ユーザーが「アップロード」ボタンを押すと、画像とテキストが新しい画像としてレンダリングされ、その上にテキストが組み込まれてからバックエンド データベースに保存されます。

これは可能ですか?どのように?

4

1 に答える 1

0

これは、Core Graphics/Quartz 2D を使用して行うことができます。私自身、Core Graphics の経験はあまりありませんが、画像を含むグラフィック コンテキストの読み込みについて説明しているドキュメントを参照してください。変更後にファイルに保存するか、最初から画像を描画して保存することができます。 :

リンク 1: iOS の描画/印刷

リンク 2: Quartz 2D プログラミングガイド

「テキスト」セクションの下にあるQuartz 2D プログラミングガイドからテキストを描画する簡単な例:

void MyDrawText (CGContextRef myContext, CGRect contextRect) // 1
{
  float w, h;
  w = contextRect.size.width;
  h = contextRect.size.height;

  CGAffineTransform myTextTransform; // 2
  CGContextSelectFont (myContext, // 3
                "Helvetica-Bold",
                 h/10,
                 kCGEncodingMacRoman);
  CGContextSetCharacterSpacing (myContext, 10); // 4
  CGContextSetTextDrawingMode (myContext, kCGTextFillStroke); // 5

  CGContextSetRGBFillColor (myContext, 0, 1, 0, .5); // 6
  CGContextSetRGBStrokeColor (myContext, 0, 0, 1, 1); // 7
  myTextTransform =  CGAffineTransformMakeRotation  (MyRadians (45)); // 8
  CGContextSetTextMatrix (myContext, myTextTransform); // 9
  CGContextShowTextAtPoint (myContext, 40, 0, "Quartz 2D", 9); // 10
}

コードの動作は次のとおりです。

  1. グラフィックス コンテキストと描画先の四角形をパラメーターとして受け取ります。
  2. アフィン変換のストレージを宣言します。
  3. フォントを Helvetica に設定し、フォント サイズをページ四角形の高さを 10 で割った値に設定します。フォント サイズはテキスト スペース単位です。この例では、テキストはサイズ変更可能なウィンドウに描画されます。ユーザーがウィンドウのサイズを変更すると、テキストのサイズも変更されます。エンコーディングは kCGEncodingMacRoman に設定されていますが、他に選択できるのは kCGEncodingFontSpecific だけです。
  4. 文字間隔を 10 テキスト スペース単位に設定します。この関数は、あるグリフの起点と次のグリフの起点との間の前進に追加のスペースを追加する場合にのみ呼び出します。
  5. テキスト描画モードを塗りと線に設定します。
  6. 部分的に透明な塗りつぶしのために、塗りつぶしの色をアルファ値 0.5 の緑に設定します。これはテキスト固有の属性ではないことに注意してください。塗りつぶしの色は、グラフィックスの状態に適用されます。
  7. ストロークの色を不透明な青に設定します。これは、テキスト固有ではない別の属性です。
  8. 45 度の回転を実行するアフィン変換を作成します。MyRadians ルーチンは、ラジアンから度数を計算するためのアプリケーション定義の便利な関数です。度をラジアンに変換する独自のルーチンを提供するか、この呼び出しをラジアンを指定する値に置き換える必要があります。そうしないと、このコード例はコンパイルされません。
  9. テキスト マトリックスを最後の手順で作成した変換に設定します。
  10. (40,0) で描画を開始するテキスト領域の x 座標と y 座標、描画する文字の配列、およびテキスト配列の長さを指定する値を渡して、テキストを描画します。この場合、C スタイルの文字列と値 9 を渡して文字数を指定します。
于 2012-05-15T18:50:30.487 に答える