OBJ-C AppScript를 사용하여 iTunes 트랙에 아트 워크를 추가하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/2413861

문제

Atrack은 itreference* 객체이며 값은 NSimage* 객체이며 URL을 통해 JPEG로 초기화되었습니다.

[[[[[aTrack artworks] data_] set] to:value] send];

GDB에서 다음과 같은 메시지를받습니다.

2010-03-09 16:59:42.860 Sandbox[2260:a0f] Can't pack object of class NSImage (unsupported type): <NSImage 0x10054a440 Size={0, 0} Reps=(

그런 다음 다음 코드를 시도했습니다.

NSData *imageData = [[NSData alloc] initWithData:[value TIFFRepresentation]];
[[[[[aTrack artworks] data_] set] to:imageData] send];

대신이 메시지를 받으십시오

2010-03-09 16:46:09.341 Sandbox[2193:a0f] Can't pack object of class NSConcreteData (unsupported type): <4d4d002a 00000000>

AppScript 문서에서 "아트 워크"항목의 "데이터"속성은 PictPicture 이미지라고합니다.

nsimage를 사진으로 어떻게 변환합니까? AppScript를 모두 사용하고 있습니까?

도움이 되었습니까?

해결책

NSIMAGE는 Foundation에 대한 AppKit 및 AppScript 링크이기 때문에 AppScript는 NSIMAGE를 연결하지 않습니다. 이 Apple Events 사용 영역이 잘 지정되지 않기 때문에 부분적으로. 이론적으로, 이미지 관련 Aedescs에는 표준 비트 맵 데이터 블록이 포함되어야하지만 iTunes 아트 워크를 다룰 때 Pict 헤더가있는 다양한 번거 로움이 포함되어야합니다. 지저분 해요.

의미있는 디스크립터 유형이없는 AEDESC에 데이터를 포장하는 것은 크게 무의미하기 때문에 NSDATA는 연결되지 않습니다. NSDATA 인스턴스를 포장하려면 사용하십시오. +[NSAppleEventDescriptor descriptorWithDescriptorType:data:].

또한 살펴보십시오 artwork 클래스 raw data 재산. 이는 나중에 추가되었으며보다 현명한 형태의 이미지 데이터를 포함 할 수 있습니다.

아, 그리고 Eyetunes 프레임 워크를 살펴보십시오. AppleScript/AppScript를 사용하는 것만 큼 유연하거나 효율적이지는 않지만 NSIMAGE를 Aedescs로 연결하기위한 코드가 포함되어 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top