¿Por qué configurar la imagen como su propio icono con sorbos da como resultado un icono borroso? ¿Hay alguna alternativa?

Cambié con éxito los íconos usando el procedimiento descrito en otra pregunta: Cambiar o configurar un ícono de archivo o carpeta mediante programación. O mi sips(o Finder) se rompió después o acabo de hacer zoom por primera vez (parece que el ícono es nítido desde ≈100x100 hacia abajo), pero, de todos modos, el ícono que sips -i image.pngse crea está borroso/pixelado:

icono borroso

Lo que hice antes de la borrosidad:

$ cp FIN-2.png FIN-3.png
$ sips -i FIN-3.png

Entonces FIN-2 y FIN-3 son lo mismo. FIN-2 es un archivo PNG de 512x512

Además: el uso sipsrompe todos los intentos posteriores al intentar establecer un icono personalizado incluso con cualquier método GUI y con cualquier archivo en cualquier carpeta .

La única cura es eliminar ~/Library/Caches/com.apple.finder/y reiniciar Finder. Luego, cambiar el ícono a través de la GUI (arrastrar y soltar, copiar y pegar) funciona normalmente con cualquier archivo.


Dos preguntas principales, y responder a cualquiera de ellas probablemente resuelva el problema lo suficientemente cerca para mí:

  1. ¿Cómo puedo configurar una imagen como un ícono mediante programación sin usar sips -i(= sips --addIcon) en el proceso? (nuevamente, consulte la otra pregunta para obtener información más completa)
    • Se prefiere Shell (bash) o AppleScript
    • Podría convertir el PNG a, por ejemplo, ICNS si fuera necesario.
  2. ¿Está sipsroto? ¿Por qué/Cómo? ¿Se puede arreglar? ¿cómo? (¿O es el Buscador? ¿O algo más?)

Respuestas (2)

¡Creo que he encontrado una solución!

En primer lugar, instale el osxutilspaquete que está un poco anticuado (2005) pero, sin embargo, funciona. (consulte el contenido de osxutils y las páginas man )

Prepare el PNG para ICNS —irónicamente, puede usar sips . Luego use seticondel osxutilspaquete para cambiar el icono:

$ sips -s format icns FIN.png --out FIN.icns
$ seticon -d FIN.icns FIN.png

El seticontambién cambia los atributos del archivo, es decir. usar SetFile -a Cno es necesario.


†: Usar un PNG como archivo fuente para seticoncambiar el ícono a un ícono PNG genérico, incluso con la -dopción. Además, el uso seticon FIN.icns FIN.pngcambia el ícono a un ícono ICNS genérico. (Consulte las páginas del manual de seticon )

‡: NB: el archivo de origen debe ser un cuadrado y las posibles longitudes de los lados son: 16, 32, 48, 128, 256 y 512.

Por extraño que parezca, la mejor solución parece ser no usar las propias herramientas de Apple sino el código de Python porque tiene 3 ventajas que no están limitadas por:

  • resolución del archivo de salida
    (funciona hasta 1024x1024)
  • formato de archivo de entrada
    (probado con ICNS y PNG)
  • permisos para instalar
    (definirlo como una función)
¡Bienvenido a Ask Different! Recomiendo echar un vistazo a esta respuesta a una pregunta similar que usa utilidades preinstaladas pero admite funciones que no son compatibles con aplicaciones anteriores. No estoy seguro de por qué está borroso en este ejemplo.
Tal vez soy bastante nuevo en este subsitio, pero no en el tema, eche un vistazo a stackoverflow.com/a/31150333/1535581 . ¿Cuáles son las características a las que te refieres? Está borroso porque su uso sips -iparece estar limitado a una resolución de 256x256 píxeles en este momento.