CGImageRef to UIImage вращает мои фотографии отладки на iOS 4 в симуляторе или устройстве - PullRequest
4 голосов
/ 13 июля 2010

У меня проблема с каким-то простым кодом.Фотографии, снятые или снятые камерой, поворачиваются.Сначала я думал, что это настройка в UIView, но это происходит, когда я копирую переданный в UIImage в другой UIImage, используя CGImageRef.Я сделал это таким образом, поскольку это был самый простой способ убедиться, что я использовал копию.Исправьте этот код, если я облажался, пожалуйста.

Код:

- (id)initWithImage:(UIImage *)image {
    if ((self = [super init]) && (image != nil)) {
        CGImageRef tmpImageRef = [image CGImage];
        puzzle = [[UIImage alloc] initWithCGImage:tmpImageRef];
    }

    return self;
}

Отладчик:

    This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys001
Loading program into debugger…
sharedlibrary apply-load-rules all
Program loaded.
target remote-mobile /tmp/.XcodeGDBRemote-25694-49
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
run
Running…
[Switching to thread 11523]
[Switching to thread 11523]
Re-enabling shared library breakpoint 1
Re-enabling shared library breakpoint 2
continue
2010-07-13 15:09:17.159 Golovomka[693:307] Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations.
2010-07-13 15:09:17.172 Golovomka[693:307] Using two-stage rotation animation is not supported when rotating more than one view controller or view controllers not the window delegate
Current language:  auto; currently objective-c
(gdb) print (CGSize)[image size]
$1 = {
  width = 1536, 
  height = 2048
}
(gdb) n
28                  puzzle = [[UIImage alloc] initWithCGImage:tmpImageRef];
(gdb)
31          return self;
(gdb) print (CGSize)[puzzle size]
$2 = {
  width = 2048,
  height = 1536
}
(gdb)

Первый отпечаток находится в строке создания экземпляра CGIMageRef,Любая помощь с благодарностью получена.Как я уже сказал, это не происходит в симуляторе и только тогда, когда я развертываю код на реальном устройстве. Обратите внимание, что в этом посте говорилось, что проблема возникала только при отладке на устройствах, а не в симуляторе.С тех пор я скопировал фотографию, снятую камерой на моем iphone 3gs, в симулятор, и возникает точно такая же проблема.Так что если у вас есть картинка размером 2048x1536, вы можете скопировать ее в симе.

1 Ответ

2 голосов
/ 13 июля 2010

UIImage имеют свойство ориентации, которое вы игнорируете, когда извлекаете CGImage из UIImage. Вы должны делать это:

if (self = [super init]) {
    puzzle = image; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...