J'ai une ressource (fichier .png) qui affiche un cadre d'image (bordure).
Ce fichier .png a une taille de 100x100px et une largeur de bordure de 10px.Objectif c - Problème de redimensionnement UIImage
Ma question:
Comment puis-je créer une autre UIImage de cette image, avec une taille différente, sans se ruiner la largeur de la frontière?
Le problème:
Lorsque je tente de dessiner la nouvelle image de l'image originale avec CGContextDrawImage
je reçois une nouvelle image avec la nouvelle taille, mais ma proportion de la frontière est la ruine.
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newWidth, newHeight));
CGImageRef imageRef = //... the image
// Build a context that's the same dimensions as the new size
CGContextRef bitmap = CGBitmapContextCreate(NULL,
newRect.size.width,
newRect.size.height,
CGImageGetBitsPerComponent(imageRef),
0,
CGImageGetColorSpace(imageRef),
CGImageGetBitmapInfo(imageRef));
// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(bitmap, kCGInterpolationHigh);
// Draw into the context; this scales the image
CGContextDrawImage(bitmap, newRect, imageRef);
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(bitmap);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
// Clean up
CGContextRelease(bitmap);
CGImageRelease(newImageRef);
Par exemple, quand j'ai essayé de créer une taille d'image 800x100p, je reçois une image en haut et très mince bordure inférieure.
Ce que j'ai besoin est que la frontière restera la même largeur
* Remarque
En utilisant resizableImageWithCapInsets:
me aidera pas, parce que je besoin d'une nouvelle image avec la nouvelle taille enregistrer sur le disque.
Est-ce que ce doit être une ressource? Je suis sûr qu'il y a un moyen d'ajouter des bordures avec la largeur et la couleur par programme. Je suppose que ce n'est pas une option pour vous (si vous voulez une bordure personnalisée, etc.), assurez-vous simplement. – Sti
ya que ça doit être .. – Eyal