Ich versuche, Gradient auf UIImage mit CoreGraphic anzuwenden; das Ergebnis, das ich bekommen habe, ist jedoch nicht sehr nett. Ich möchte einen schwarzen bis transparenten Farbverlauf am unteren Bildrand erstellen, um einen Kontrast für die Platzierung von Text zu schaffen. Der Gradient, den ich konnte, passt jedoch nicht gut zum Bild. können Sie deutlich die Trennung in der Mitte sehen. Das Ergebnis, das ich suche, ist wie diese Anwendung: http://capptivate.co/2014/02/17/yummly-3/ Wie sollte ich den Gradienten anwenden, um dies zu erreichen? (Ich muss dies auf eine große Anzahl von Bildern anwenden).Anwenden von Farbverlauf auf UIImage reibungslos
Mein Ergebnis:
Hier ist mein Code:
func imageWithGradient(img:UIImage!) -> UIImage{
UIGraphicsBeginImageContext(img.size)
var context = UIGraphicsGetCurrentContext()
img.drawAtPoint(CGPointMake(0, 0))
let colorSpace = CGColorSpaceCreateDeviceRGB()
let locations:[CGFloat] = [0.50, 1.0]
//1 = opaque
//0 = transparent
let bottom = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).CGColor
let top = UIColor(red: 0, green: 0, blue: 0, alpha: 0).CGColor
let gradient = CGGradientCreateWithColors(colorSpace,
[top, bottom], locations)
let startPoint = CGPointMake(img.size.width/2, 0)
let endPoint = CGPointMake(img.size.width/2, img.size.height)
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Versuchen von Y startpoint und endPoint von Bildgrenzen so gradient Größe größer sein wird Einstellung und die Differenz der Farben wird weniger auffällig. Setzen Sie zum Beispiel startPoint Y auf '-img.size.height/4' und endPoint' img.size.height * 1.25'. Wenn die Farbe am Ende des Bildschirms zu transparent erscheint, dann erhöhe auch die untere Farbe alpha. –
@zellb Ich habe es versucht und die Linie in der Mitte ist immer noch gut sichtbar. Anders als die App im Link habe ich gezeigt, das ist sehr flüssig. Haben Sie eine Idee, wie Sie den Filter anwenden können? Oder ist es besser, einfach einen Filter in Photoshop zu erstellen und ihn auf ein anderes Bild anzuwenden. – harinsa