2014-11-10 1 views
4

내 응용 프로그램에서는 initWithContentsOfURL을 사용하여 다양한 유형의 이미지 (JPEG, TIFF, PNG, GIF 등)를 이미지로로드 한 다음 OpenGL 텍스처로로드합니다.TIFF를로드 할 때 NSImage initWithContentsOfURL 알파 채널이 누락되었습니다.

알파 채널이있는 이미지를로드하는 유일한 유형은 png입니다. (위의 목록에서 PNG 및 TIFF 에 알파 데이터가 포함될 수 있습니다.) .tiff 이미지를로드하려고하면 알파 채널없이로드됩니다. 이미지의 이미지 rep는 alpha = NO로보고되고 bitsPerPixel은 24.

PS에서 알파로 이미지를 편집하고 PNG 및 TFF로 저장하며 PNG로 내 프로그램에서 알파를로드 할 수 있지만 TIFF는로드 할 수 없습니다. 또한 PS에서 TIFF 이미지를 열 수 있습니다. 알파 데이터가 있는지 확인하십시오.

왜 TIFF 이미지가 알파 채널로로드되지 않는가요? 그리고 알파 채널을 삭제하지 않고 내 TIFF를로드 할 수있는 또 다른 appkit 호출이 있습니까? 바닥에?

편집 :

이 질문을 게시 한 이후 일부 4 채널 TIFF는 알파 데이터로로드되고 일부는로드되지 않는 것으로 나타났습니다. 워크 플로우가 다른 결과를 가져 오는 지 아직 파악하지 못했습니다.

이 파일은 포토샵에서 알파 채널을로드하지만 -[[NSImage alloc] initWithContentsOfURL] 사용하지 않는 당신이 코코아를로드하는 경우 : 또한 알파 채널이

Image "Red Julia Seahorse crop"

유사한 이미지가 위를 사용하여 알파 부하를합니까 난 그냥 시도

Image "Transparent Seahorses"

답변

1

문제는 이미지가 저장된 방법으로 확실히, 대부분 사용되는 TIFF 옵션을 제공합니다.

두 이미지를 사용하여 "Red Julia Seahorse Crop"이미지는 투명도로 표시되지 않지만 "Transparent Seahorses"는 투명도로 올바르게 표시됩니다.

Photoshop에서 "Red Julia Seahorse Crop"을 열고 이미지를 다시 저장했지만 "TIFF 옵션"대화 상자에서 "투명도 저장"확인란이 선택되었는지 확인했습니다. 일단 저장되면 해당 이미지는 이제 응용 프로그램에서 투명도를 올바르게 나타냅니다.

screen shot TIFF options screen shot output from application

+0

PS의 "투명도 저장"설정이 실제로 차이를 만드는 것처럼 보입니다. 정말 이상한 점은 PS에로드하면 이미지가 알파로 표시된다는 것입니다. 게다가 프로그래밍 방식으로 생성 한 TIFF는 코코아에서 알파를로드하지 않았다고 맹세합니다. 나는 그것을 지금 반복 할 수는 없다. –

+0

내가 알 수 있듯이 투명도는 두 경우 모두 TIFF 파일에 저장되지만 "투명도 저장"옵션은 소모성 응용 프로그램에 투명성을 적용할지 여부를 알려주는 파일의 정렬 플래그를 설정합니다. 나는 아마 그 설명을 도살하고 있지만, 나는 당신이 내 뜻을 알 것 같아요. – picciano

1

(OSX 10.9.4) 및 졸업 투명성을 갖춘로드 이미지 : 코코아 전화. 내가 사용한 코드는 간단합니다 :

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Insert code here to initialize your application 
    NSURL *imageURL = [NSURL URLWithString: @"file:/Users/john/Desktop/test.tiff"]; 
    NSImage *image = [[NSImage alloc] initWithContentsOfURL: imageURL]; 
    self.imageView.image = image; 
} 

레이어를 사용하고 레이어가없는 (두 가지 테스트) TIFF를 만들었습니다. 둘 다 일했다. 졸업 된 투명도가 정품인지 확인하기 위해 여러 가지 NSImageView 배경을 시도했습니다. IB에서 다른 이미지보기 테두리 스타일을 선택하면 배경색도 변경됩니다.

Photoshop 12 (CS5)를 사용하여 이미지를 만들고 저장시 TIFF 옵션 대화 상자의 '투명도 저장'확인란을 수동으로 선택했습니다.

여기에 나와있는 내용이 문제를 해결하는 데 도움이되기를 바랍니다. 내 테스트에서 모두 예상대로 작동합니다.

+0

존, 응답 해 주셔서 감사합니다. 내 TIFF ('- [[NSImage alloc] initWithContentsOfURL]')를로드하기 위해 올린 코드와 정확히 같은 코드를 사용하고 있습니다. 내 질문을 올린 후 알파를로드하는 일부 4 채널 TIFFS를 발견했습니다. 내 질문에 올바르게 작동하지 않는 샘플 이미지를 포함하도록 편집했습니다. 매우 이상합니다 ... –

+0

Duncan, 매우 흥미 롭습니다. 알려 줘서 고마워. –

관련 문제