2014-08-07 2 views
0

First Я создаю CGImageRefResize Retina NSBitmapImage половинного размера

CGImageRef imageRef = [self createCGimageOfDocumentInPath:scaledSelection withBackgroundColor:self.backgroundColor]; 

Затем я создаю NSBitmapImageRep

imageData = [[NSBitmapImageRep alloc] initWithCGImage:imageRef]; 

Тогда я делаю изображения Retina (144pixels/дюйм)

 NSSize newSize; 
    newSize.width = [imageData pixelsWide] * 72.0/144; // x-resolution 
    newSize.height = [imageData pixelsHigh] * 72.0/144; // y-resolution 
    [imageData setSize:newSize]; 

В моем отладчике говорится, что мой imageData->NSImageRep->_size = NSSize(320/240) pixelsWide = 640 и pixelsHigh = 480

Это выглядит правильно, я хочу, чтобы размер изображения, чтобы быть 320/240, но я хочу, чтобы это было сетчатку, поэтому я хочу пикселы быть вдвое больше, чем, не так ли?

Когда я сохранить это изображение и загрузить его, он заканчивает тем, что имел высоту/ширину 640/480-- но и 144pixels/дюйм (сетчатка)

Так что я думаю, что мне просто нужен способ, чтобы изменить размер мой образ в два раза, прежде чем я его сохраню, или, может быть, я ошибаюсь? Кто-нибудь сделал что-нибудь подобное раньше?

ответ

0

Так, как оказалось, OSX записывает изображения, которые были захвачены с помощью инструмента скриншотов, а затем сообщает Preview, чтобы открыть это изображение в половинном размере. Таким образом, на самом деле невозможно создать изображение, которое открывает половину размера в Preview, если вы не будете где-то входить в файлы ОС. Это действительно не имеет значения, потому что, если вы открываете изображение, снятое с помощью инструмента скриншотов в Chrome или другом приложении, кроме Preview, оно также открывается с двойным размером. Так что это просто специальный корпус Apple, созданный для Preview + Built-in Screenshots.

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

Я попытался изменить любое подходящее свойство в NSBitmapImageRef, CGImage, CGContext, чтобы попытаться это получить. Пробовал также изменять NSEXIFProperties, но безуспешно. (Связанный, независимо от того, что вы меняете в метаданных, он не меняет фактического изображения ... оказывается, это просто ярлыки. Это имеет смысл, потому что я видел gif с расширением .jpeg)

статья о ком-то, кто масштабирует изображение открыто в режиме предварительного просмотра обратно, но это противоположно тому, что я хотел сделать

http://www.macissues.com/2014/03/29/adjust-retina-macbook-screenshots-to-be-actual-size/

в любом случае, после того, как много копания, я боюсь, что я буду иметь в На данный момент отметьте этот случай закрытым. Если кто-нибудь споткнутся об этом и найдет решение, пожалуйста, сообщите мне :)

Смежные вопросы