Трим альфа от CGImage - PullRequest
       11

Трим альфа от CGImage

1 голос
/ 10 февраля 2011

Мне нужно получить обрезанный CGImage.У меня есть изображение с пустым пространством (альфа = 0) вокруг некоторых цветов, и мне нужно его обрезать, чтобы получить размер только видимых цветов.

Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2011

Есть три способа сделать это:

1) Используйте Photoshop (или графический редактор по вашему выбору), чтобы отредактировать изображение - я полагаю, вы не можете сделать это, это слишком очевидный ответ!

2) Игнорировать это - почему бы просто не проигнорировать это, нарисовать изображение в полном размере? Он прозрачен, поэтому пользователь никогда не заметит.

3) Напишите некоторый код, который проходит через каждый пиксель изображения, пока не дойдет до того, который имеет альфа-значение> 0. Это должно дать вам количество строк, которые нужно обрезать сверху. Однако это замедлит ваш пользовательский интерфейс, поэтому вы можете захотеть сделать это в фоновом потоке.

, например

// 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;

Когда вы знаете количество прозрачного пространства вокруг изображения, вы можете нарисовать его с помощью UIImageView, установите renderMode в центр и позвольте ему выполнить обрезку за вас:)

...