-2

Objective-C の小さな PNG に基づいて、プログラムで大きな PNG を作成しようとしています。小さい方の PNG は、透かしとして使用しているロゴです。大きなPNGの右下隅に小さなPNGを配置したい。大きい PNG はソース ビデオのサイズである必要があり、背景は透明です。

私はこれを C# で動作させていますが、Objective-C で動作させる方法がよくわかりません。Image I/O ライブラリを使用する必要があると思います。

Bitmap bm;
int shortestSide;
if (videoWidth > videoHeight)
    shortestSide = videoHeight;
else
    shortestSide = videoWidth;

var logoDimension = (int)(shortestSide * 0.05);

Image logo;
if (logoDimension <= 16)
    logo = Resources.watermark_16x16;
else if (logoDimension <= 24)
    logo = Resources.watermark_24x24;
else if (logoDimension <= 36)
     logo = Resources.watermark_36x36;
else if (logoDimension <= 48)
     logo = Resources.watermark_48x48;
else if (logoDimension <= 54)
     logo = Resources.watermark_54x54;
else
     logo = Resources.watermark_64x64;

var logoPoint = new Point(videoWidth - logo.Width * 2, videoHeight - logo.Height * 2);

var image = new Bitmap(videoWidth, videoHeight, PixelFormat.Format32bppArgb);
using (var g = Graphics.FromImage(image))
{
    g.DrawImageUnscaled(logo, logoPoint);
}

bm = image;
bm.Save(watermarkPath, ImageFormat.Png);

ありがとう!

4

1 に答える 1

0

これは、画像をマージするために書いたブログ投稿へのリンクです。これは、渡されたイメージを既存の UIImage にオーバーレイ (またはアンダーレイ) する UIImage カテゴリです。

http://saveme-dot-txt.blogspot.com/2011/06/merge-image-function.html

基本的に重要なのは、新しい画像コンテキストを作成し、最初の画像をその上に描画し、次に 2 番目の画像を描画してから、新しい画像を返すことです。

新しい画像を取得したら、次のようなことができると思います。

   NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage);

PNGエンコーディングを取得します。

于 2012-08-09T17:48:19.730 に答える