7

Есть ли способ манипулировать иконками в файле Mac OS X из Automator или из терминала?

В моем случае я хочу удалить пользовательские значки (то же самое, что сделать «Получить информацию» и «Правка-> Вырезать на значке») из большого количества файлов.

4 ответа4

9

Я задал этот вопрос еще в 2007 году. Комбинация 3 инструментов OS X может сделать это. Вам нужно установить Developer Tools, а затем проверить: /Developer /Tools /Rez, DeRez и SetFile.

Вы можете использовать «sips», чтобы придать файлу изображения собственный значок («sips» действует на исходный файл, поэтому может быть безопаснее работать с копией):

/bin/cp imagefile.jpg donorfile.jpg
/usr/bin/sips -i donorfile.jpg

Если вы просто хотите присвоить файлу изображения собственный эскиз, вы можете на этом остановиться.

В противном случае, если у вас установлены инструменты "Разработчик" / "Код X", вы можете использовать "DeRez" и "Rez", чтобы манипулировать ресурсами для копирования вновь созданного ресурса "icns" в файл:

/Developer/Tools/DeRez -only icns donorfile.jpg > tempicns.rsrc

Затем скопируйте временный файл в ресурс icns файла получателя и установите атрибут файла пользовательского значка:

/Developer/Tools/Rez -append tempicns.rsrc -o recipientfile.xyz
/Developer/Tools/SetFile -a C recipientfile.xyz

Наконец, перезапустите "Finder" для просмотра изменений:

/usr/bin/osascript -e 'tell application "Finder" to quit' -e 'delay 2' -e 'tell application "Finder" to activate'

Оригинальная ветка вопросов и ответов: http://forums.macosxhints.com/showpost.php?p=372418&postcount=7

3

Я не уверен насчет Automator, но это возможно из Какао, используя

[[NSWorkspace sharedWorkspace] setIcon:nil
                               forFile:@"/path/to/file"
                               options:0];

или как простой скрипт на Python:

#!/usr/bin/python

from AppKit import NSWorkspace
import sys

for path in sys.argv[1:]:
    NSWorkspace.sharedWorkspace().setIcon_forFile_options_(None, path, 0)
1

Спасибо за скрипт Python. Я сделал версию, чтобы извлечь значок в формате JPEG

#!/usr/bin/python
# python script that extract an icon from an OSX file and save it at jpeg

from AppKit import *
import sys

for path in sys.argv[1:]:
NSBitmapImageRep.imageRepWithData_(NSWorkspace.sharedWorkspace().iconForFile_(path).TIFFRepresentation()).representationUsingType_properties_(NSJPEGFileType, None).writeToFile_atomically_(path+".jpg", None)
0

xattr удалит пользовательский значок, если с файлом связаны метаданные, так как я попытался удалить метаду, и он удалил только пользовательский значок. Однако, пожалуйста, проверьте, есть ли у вас другая метада, связанная с файлом, кроме пользовательского значка в com.apple.Finder . Способ сделать это:

xattr -d com.apple.Finder filename

Для больше вариантов:

xattr --help

Вы можете проверить, связан ли файл с xattr если вы найдете метку @ сразу после разрешений, используя ls -l для файла. Опять же, у меня ничего не было, кроме пользовательского значка, связанного с файлом, и приведенная выше команда аккуратно удалила его, возможно, в вашем файле есть нечто большее, чем просто пользовательский значок, связанный с этим тегом. Я не эксперт по метаданным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .