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

Получено предупреждение о памяти при сшивании изображений

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

Это то, что я использую для объединения двух изображений.

[self performSelector:@selector(joinImages:secondImage:) withObject:firstimage withObject:imageCaptured];

- (UIImage *)joinImages:(UIImage *)im1 secondImage:(UIImage *)im2
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];


    //Joins 2 UIImages together, stitching them horizontally
    CGSize size = CGSizeMake(im1.size.width+im2.size.width, im2.size.height);
    UIGraphicsBeginImageContext(size);

    CGPoint image1Point = CGPointMake(0, 0);
    [im1 drawAtPoint:image1Point];

    CGPoint image2Point = CGPointMake(im1.size.width,0);
    [im2 drawAtPoint:image2Point];

    UIImage* finalImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    firstimage=finalImage;// final images updated everytime

    [pool release];
    return finalImage;
}

Но я получаю предупреждение о памяти, когда запускаю это на iPhone, и он отлично работает с iPod.

Также изображения обрезаются в случае iPhone.

Все, что я могу сделать, чтобы решить эту проблему.

Спасибо..


  • вы создаете scrollview? 22.10.2013
  • нет нет прокрутки 22.10.2013
  • вы реализуете несколько imageView.? 22.10.2013
  • Нет, я просто сшиваю несколько изображений вместе снова и снова, и через 3-4 раза появляется предупреждение о памяти. 22.10.2013
  • попробуйте проделать эту работу в другом потоке. [NSThread detachNewThreadSelector ...]; 22.10.2013

Ответы:


1

Вы могли бы сделать что-то подобное.

 - (UIImage *)joinImages:(UIImage *)im1 secondImage:(UIImage *)im2
   {   
    @autoreleasepool
    {
       //Joins 2 UIImages together, stitching them horizontally
       CGSize size = CGSizeMake(im1.size.width+im2.size.width, im2.size.height);
      UIGraphicsBeginImageContext(size);

      CGPoint image1Point = CGPointMake(0, 0);
      [im1 drawAtPoint:image1Point];

      CGPoint image2Point = CGPointMake(im1.size.width,0);
      [im2 drawAtPoint:image2Point];

      UIImage* finalImage = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();
      firstimage=finalImage;// final images updated everytime

      return finalImage;
   }   
 }

Надеюсь, это сработает для вас.

22.10.2013

2
  • Это не имело никакого значения в вызове такого метода или в селекторе выполнения. 22.10.2013
  • Новые материалы

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

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

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

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

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

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

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