У меня есть приложение, в котором вы перемещаете изображения в определенных положениях и накладываете их на слой. Его приближение хорошо, но проблема, с которой я продолжаю сталкиваться, - это то, что у многих моих изображений есть белые пробелы вокруг них (они используются для jpg), пробел всегда является шестнадцатеричным пробелом #FFFFFF, поэтому мне было интересно, есть ли способ в объективном -c замаскировать весь шестнадцатеричный код в изображении? Я бы вручную отредактировал изображения, но есть тысячи из них от третьей стороны. Есть идеи?Xcode удаляет цвет из изображения программным путем?
ответ
Я нашел этот удивительный метод here, который можно поместить в текущем файле .h:
+(UIImage *)changeWhiteColorTransparent: (UIImage *)image
{
CGImageRef rawImageRef=image.CGImage;
const float colorMasking[6] = {222, 255, 222, 255, 222, 255};
UIGraphicsBeginImageContext(image.size);
CGImageRef maskedImageRef=CGImageCreateWithMaskingColors(rawImageRef, colorMasking);
{
//if in iphone
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, image.size.height);
CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0);
}
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), maskedImageRef);
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
CGImageRelease(maskedImageRef);
UIGraphicsEndImageContext();
return result;
}
Так просто передать изображение этому методу, как так:
UIImage *newImage = [self changeWhiteColorTransparent: yourOldImage];
Удивительно! Мне пришлось сделать функцию частной и изменить несколько вещей, но эта работа так хорошо! Хотел бы я дать вам больше, чем просто вымпел и лучший ответ! – CMOS
@CalvinMoss рад, что я мог бы помочь! – JustAnotherCoder
Для поддержки сетчатки или масштаба изображения замените 'UIGraphicsBeginImageContext (image.size);' с 'UIGraphicsBeginImageContextWithOptions (image.size, NO, image.scale);' – Gomfucius
Вы можете использовать ImageMagick-х API удалить одноцветное пространство с краев изображения.
На ImageMagick командной строки, это так же просто, как:
convert input.jpg -trim +repage output.png
Эта -trim
операция будет автоматически удалять пиксельные строки и столбцы, пока он не встречает пиксель, который больше не тот же цвет, крайние строки/столбцы.
Если ваши пиксели не используют точно такие же цвета, вы можете добавить «фактор фаз» с -fuzz X%
. Это позволит удалить все пиксели, которые находятся в пределах цветового расстояния X%
:
convert input.tiff -trim -fuzz 5% +repage output.gif
convert input.png -trim -fuzz 9% +repage output.png
(Как вы можете видеть, тот же команда может автоопределение запрошенные входные и выходные форматы файлов и преобразование между ними тоже, если вам это нужно.)
Обычно, что вы можете достичь с помощью командной строки ImageMagick, вы также можете достичь в своих программах при использовании API.
Вот список со всеми доступными API-интерфейсами.Он содержит ссылки на конкретные веб-ресурсы:
- G2F (Ada),
- MagickCore (C),
- MagickWand (C),
- ChMagick (Ч),
- ImageMagickObject (COM +),
- Magick++ (C++),
- JMagick (Java),
- L-Magick (Лисп),
- Lua (Луа),
- NMagick (Neko/haXe),
- Magick.NET (.NET),
- PascalMagick (Паскаль),
- PerlMagick (Perl),
- MagickWand for PHP (РНР),
- IMagick (РНР),
- PythonMagick (Python),
- RMagick (Ruby),
- TclMagick (Tcl/TK).
Внимание: Не все эти API, одинаково хорошо развиты, поддерживается или полным.
Привет, Kurt Pfeifle, я работаю с волшебной палочкой, как приложение, используя объективный cI am не удалось реализовать Или использовать эти api, могли бы вы помочь в этом. Можете привести пример приложения. Это будет полезно для сохранения моего времени. –
- 1. Как изменить цвет в изображении программным путем?
- 2. Как получить цвет акцента программным путем?
- 3. Как изменить цвет текста предпочтений программным путем?
- 4. Создание градиентов программным путем?
- 5. Фрагмент добавлен программным путем
- 6. Нарисовать изображение программным путем
- 7. Сделать программным обеспечением GUI программным путем?
- 8. Программным установить цвет фона кнопки удаляет поля и закругленные углы
- 9. Оракул формы меняет цвет фона окна программным путем?
- 10. Как установить фоновый цвет действия на белый программным путем?
- 11. Изменить видимость кнопки из заголовка программным путем?
- 12. добавить время из ячеек программным путем
- 13. вызов всплывающего окна из popupcontrolextender программным путем
- 14. XCode: как получить адрес электронной почты пользователя программным путем?
- 15. Обновление свойств MSI программным путем
- 16. Управление несколькими jdbcTemplates программным путем
- 17. Создание объекта ловкости программным путем
- 18. Как показать представление программным путем
- 19. Установить произвольное местоположение программным путем
- 20. peewee: создание запроса программным путем
- 21. Scrollview не создается программным путем
- 22. Вызов организовывать импорт программным путем
- 23. Скрытие значка программным путем. C#
- 24. Получить шрифт очертания программным путем
- 25. Поиск определенного сеттера программным путем
- 26. Flash уменьшить линию программным путем
- 27. Как объединить два растровых изображения один над другим программным путем?
- 28. Установить цвет векторного изображения в Xcode 6+
- 29. Каков наилучший способ «размазать» изображение программным путем?
- 30. Установить изображение программным путем на кнопке
Итак, вы можете преобразовать в цветовое пространство RGBA, а затем изменить все пиксели #FFFFFF, чтобы иметь альфа 0 –
См. Http://stackoverflow.com/questions/12396236/ios-change-the-colors-of- a-uiimage –
http://stackoverflow.com/questions/633722/how-to-make-one-color-transparent-on-a-uiimage –