Nano Hash - криптовалюты, майнинг, программирование

Объединение двух UIImage в 1 для сохранения в библиотеке

Я хотел бы знать, как я могу объединить 2 uiimage в 1? Я хотел бы сохранить конечный продукт в библиотеке. Для сохранения изображений я использую кнопку пользовательского интерфейса. Вот фрагмент того, как я сохраняю UIImageview.image.

-(IBAction)getPhoto:(id)sender  {

UIImage* imageToSave = imageOverlay.image;

UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
}

Я посмотрел в Интернете и прочитал о UIGraphicsBeginImageContext. Нашел пример, но я не мог понять, как на самом деле применить его к моему. Вот тот, который у меня есть до сих пор.

- (UIImage*)addImage:(UIImage *)image secondImage:(UIImage *)image2 
{
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];
[image2 drawInRect:CGRectMake(10,10,image2.size.width,image2.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return newImage;
}

Сейчас у меня есть 2 UIImageviews: imageOverlay.image и imageView.image. Если я использую описанный выше метод, как присвоить возвращаемое значение UIImageWriteToSavedPhotoAlbum? Надеюсь, кто-то может указать мне правильное направление.

Большое спасибо.

14.07.2011

  • очень полезно ... работал как шарм. 10.12.2013
  • это действие addImage помогло мне объединить 200 изображений в одно.. Спасибо. 22.07.2014

Ответы:


1

Похоже, у вас нет заголовка для метода в файле заголовка, в файле .h контроллера класса/представления, из которого вы запускаете IBAction, добавьте первую строку вашего метода, -(UIImage*) addImage:... И завершите его ; перед @концом. Это должно работать, хотя вам придется где-то реализовать это в файле .m того же файла .h.

03.02.2012

2

Попробуй это:

-(IBAction)getPhoto:(id)sender  {

UIImage* imageToSave = [self addImage:imageOverlay.image secondImage:imageView.image];

UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
}
14.07.2011
  • Привет, только что попробовал твой код. Это дало мне это предупреждение: getPhotoController может не отвечать на -addImage:SecondImage. getPhotoController — это имя класса. Есть ли что-то еще, что я мог упустить или сделать что-то не так? 14.07.2011
  • Вы должны указать: - (UIImage*)addImage:(UIImage *)image secondImage:(UIImage *)image2 ; в своем заголовке (файл getPhotoController.h). 14.07.2011
  • Теперь я получаю SIGABRT. Не уверен, как читать отладку, чтобы выяснить проблему. Я поместил бит - (UIImage *) в файл заголовка и ваш первый ответ в моем методе. У меня есть лог с консоли. Вот последний бит журнала: завершение вызывается после создания экземпляра «NSException». 14.07.2011
  • Убедитесь, что оба изображения не являются nil. 14.07.2011
  • Мне очень жаль, но я, должно быть, такой нуб. Что вы подразумеваете под проверкой того, что оба изображения не равны нулю? 15.07.2011
  • Привет, Данутц Ч. Я читал больше об использовании UIImageView.images. Ни в коем случае я не устанавливал imageOverlay.image = nil. Однако при его сборке меня выдают следующие предупреждения: 1. Определение метода для 'addImage:secondImage:' не найдено. 2. Неполная реализация класса getPhotoController. Есть ли что-то, чего мне еще не хватает? 25.07.2011
  • Привет, hakimo, я знаю, что это может быть очевидным, но проверили ли вы, является ли имя вашего метода getPhoto:.... или getPhotoController:..... похоже, что компилятор не может найти объявление вашего метода ( это бит, который вы добавляете в свой файл .h), он не может найти метод в вашем файле .m или в одном из них есть опечатка. убедитесь, что все точно так же. Что касается изображений, которые являются нулевыми, выделите оба изображения и передайте их через метод, а затем убедитесь, что вы освобождаете их, если вы не используете автоссылку. 11.04.2013

  • 3

    создайте NSLog и пропустите их через него вот так, image1 и image2 — это ваши изображения:

    NSLog (@"testing images aren't nil. Details for image1: %@ image2: %@",image1,image2);
    

    Я тоже новичок, и я действительно не знаю более сложного способа увидеть, является ли изображение нулевым, но я видел, что, передав нулевое изображение в оператор выше, вы получите только ноль вместо значений из этих двух изображений. Если вы получаете много информации, даже несмотря на то, что это много кодов, и вы можете их не понимать, как обычно не понимаю я, по крайней мере, вы можете проверить, нулевые они или нет.

    05.03.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..