Мне нужно получить обрезанный CGImage. У меня есть изображение с пустым пространством (альфа = 0) вокруг некоторых цветов, и его нужно обрезать, чтобы получить размер только видимых цветов.
Спасибо.
Мне нужно получить обрезанный CGImage. У меня есть изображение с пустым пространством (альфа = 0) вокруг некоторых цветов, и его нужно обрезать, чтобы получить размер только видимых цветов.
Спасибо.
Есть три способа сделать это:
1) Используйте фотошоп (или графический редактор) для редактирования изображения - я предполагаю, что вы не можете этого сделать, это слишком очевидный ответ!
2) Проигнорировать - почему бы просто не проигнорировать, нарисовать изображение в полный размер? Это прозрачно, поэтому пользователь никогда не заметит.
3) Напишите некоторый код, который проходит через каждый пиксель изображения, пока не дойдет до того, у которого значение альфа> 0. Это должно дать вам количество строк, которые нужно обрезать сверху. Однако это замедлит ваш пользовательский интерфейс, поэтому вы можете сделать это в фоновом потоке.
e.g.
// 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 в центр и позволить ему выполнить обрезку за вас :)
NSOperationQueue
, чтобы справиться с их обработкой в фоновом режиме :(
- person deanWombourne; 10.02.2011