2011-02-10 2 views
1

J'ai besoin d'une image CG ajustée. J'ai une image qui a un espace vide (alpha = 0) autour de certaines couleurs et j'ai besoin de l'ajuster pour obtenir la taille des seules couleurs visibles.Trim alpha de CGImage

Merci.

Répondre

0

Il y a trois façons de le faire:

1) Utilisez Photoshop (ou éditeur d'image de choix) pour modifier l'image - Je suppose que vous ne pouvez pas faire cela, il est trop évident une réponse!

2) Ignorez-le - pourquoi ne pas l'ignorer, dessiner l'image en taille réelle? C'est transparent, donc l'utilisateur ne le remarquera jamais.

3) Écrivez du code qui traverse chaque pixel de l'image jusqu'à ce qu'il atteigne celui qui a une valeur alpha> 0. Cela devrait vous donner le nombre de lignes à couper depuis le haut. Cependant, cela va ralentir votre interface utilisateur, alors vous pourriez vouloir le faire sur un fil de fond.

par exemple.

// To get the number of transparent rows at the top of the image 
// Sorry this code is so ugly 
uint32 *p = start_of_image; 
while (0 == *p & 0x000000ff && p < end_of_image_data) ++p; 
uint number_of_white_rows_at_top = (p - start_of_image)/width_of_image; 

Lorsque vous connaissez la quantité d'espace transparent à partir autour de l'image que vous pouvez dessiner à l'aide d'un UIImageView, réglez le renderMode au centre et laissez-le faire la coupe pour vous :)

+0

je besoin de le faire dynamiquement, et j'ai besoin de la taille (pas exacte, mais j'en ai besoin), donc 1 et 2 ne fonctionnent pas. J'ai essayé une approche similaire à # 3, mais c'est trop lent:/Je vais essayer exactement comme vous l'avez suggéré. J'espérais qu'il y avait un moyen avec un masque de magie. –

+0

Il est vraiment trop lent pour travailler sur le fil principal - j'ai une application qui coupe le haut et le bas des images mais je dois faire un 'NSOperationQueue' pour traiter le traitement en arrière-plan :( – deanWombourne