在Objective-C中基于较小的PNG以编程方式创建大型PNG

时间:2012-08-09 16:51:30

标签: objective-c macos image image-processing

我正在尝试以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);

谢谢!

1 个答案:

答案 0 :(得分:0)

这是我为合并图片而写的博客文章的链接。这是一个UIImage类别,它将传入的图像覆盖(或底层)到现有的UIImage。

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

基本上关键是创建一个新的图像上下文,将第一个图像绘制到它上面,然后绘制第二个图像,然后返回新图像。

获得新图像后,我认为您可以执行以下操作:

   NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage);

获取PNG编码。