假設我有一個100x100的圖像。我想將圖像放到500x500的較大的畫布上。使用GPU(可能爲CIFilters)在不使用圖像上下文的情況下將圖像放置在較大的畫布大小上
我目前的做法是使用UIGraphics創建一個上下文,然後將圖像繪製到上下文中。
UIGraphics.BeginImageContext(....);
ImageView.Draw (....);
那偉大工程,但它不是那麼快,我想它是我在做什麼。我注意到CIFilters非常快。 有沒有一種方法可以將圖像放置在使用CIFilters的較大畫布上,或使用GPU而不是CPU的另一種方法?我已經嘗試與CIFilters CICrop和CIPerspectiveTransform,但我似乎無法讓我期望的結果...
原始圖片100x100的
在500×500我想要的結果圖像。我只是想使用CIFilters或某些GPU操作來拍攝圖像並增加畫布大小。
我嘗試使用CICrop做一個「反向裁剪」,但沒有奏效。注意我指定了CIVector的大小爲500x500,即使圖像本身是100x100,結果圖像完全忽略了額外的空間並關閉了。這裏是我的代碼:
CICrop crop = new CICrop();
crop.Image = ImageView.Image.CGImage;
crop.Rectangle = new CIVector(0, 0, 500, 500);
ImageView.Image = new UIImage(crop.OutputImage);
Console.WriteLine("ImageView.Image.size = "+ ImageView.Image.Size);
我明白作物是如何工作的。我只是試圖想出一個巧妙的方式,通過使用CIFilter來更改圖像的畫布大小,因爲CI濾鏡非常快!規模不會'實際上做我想要實現的。縮放會縮放整個圖像,我希望圖像本身保持相同的大小/尺寸,但只能增加圖層(也就是爲圖像添加空白或空白..)將其視爲在photoshop中打開100x100圖像,然後將Canvas大小更改爲500x500。 – LampShade
@LampShade - 對不起,我想錯誤地理解你的問題!我認爲你可以通過源代碼合成過濾器實現你想要的功能(https://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CoreImageFilterReference/Reference/reference.html#// apple_ref/DOC /濾波器/ CI/CISourceOverCompositing)。源過濾背景圖像= [CIImage imageWithColor:white];輸入圖像=您的100X100圖像;並將此過濾器鏈接到500X500農作物過濾器。裁剪過濾器的輸出應該是你在找什麼? – terapixel
聽起來好像應該可以工作,但是我一直在努力的是如何將100x100圖像準確定位在我想要的位置?在源過濾之後,100x100圖像的位置始終爲X-0,Y-0。如果我想讓它成爲X-50,Y-152?我似乎無法定位......任何想法?不要擔心誤會! – LampShade