2012-08-09 49 views
-2

我试图以编程方式创建基于Objective-C中较小PNG的大型PNG。较小的PNG是我用作水印的标志。我想将较小的PNG放在大型PNG的右下角。大的PNG应该是源视频的大小并且具有透明背景。以编程方式在Objective-C中基于更小的PNG创建大型PNG

我在C#中工作,但不能完全弄清楚如何在Objective-C中工作。我想我应该使用图像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

你知道任何Objective-C吗?你之前使用过Cocoa或Foundation吗?语言和框架是不同的,所以你可能不应该尝试直接移植这些代码。 – 2012-08-09 16:58:44

+1

但你知道,Objective-C不是C#吗? – vikingosegundo 2012-08-09 17:01:29

+0

是的,我知道Objective-C不是C#。我已经使用了好几个月。我发布了我的C#,以便人们可以看到我想要做的事情。我试图找出如何在Objective-C中完成相同的任务。 – 2012-08-09 17:07:31

回答

0

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

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

主要关键是要创建一个新的图像内容,画出你的第一个图像到它,那么你的第二个,然后返回新形象。

之后,你有新的形象,我想你可以这样做:

NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage); 

得到PNG编码。