2011-05-14 6 views
9

Quiero escribir un script CGI que acepte una ruta posix como una cadena, y devuelve un png que lo representa. Por ejemplo:servidor web responde a? Q = "/ ruta/a/archivo" con una "barra de ruta" png


Si el guión se envía la cadena /System/Library/CoreServices/Finder.app,

devolverá el siguiente archivo PNG: /System/Library/CoreServices/Finder.app


Un ejemplo basado en cualquier plataforma de scripts que viene incluida con Mac está bien para mí (Python, Perl, AppleScript, BASH). Puede que no lo sepa, pero puedo salir adelante para tener una idea de lo que tengo que hacer.

creo que lo que estoy buscando es una manera de generar un widget de estilo NSPathCell, y volcar su contenido en un archivo de imagen

Respuesta

1

, usted puede obtener datos de imagen de un camino como éste:

1) Crear un 'NSPathControl'

2) Utilice el control de 'setPathCtrl: toURLStr:' para que muestre la URL de su elección.

3) Llame al control 'getPngDataFromNSView:' y le dará los datos de su imagen deseada.

4) Ahora puede guardar los datos en un archivo usando 'writePngData:'

Si Obj-C no es una opción, puede utilizar PyObjC puente desde Python.

+0

De hecho, estos pasos funcionan. – username

4

Esa es una NSPathControl. Para tomar un NSString y dividirlo en los componentes del camino, puede invocar el método -[NSString pathComponents]. Si desea que real png, debe hacer el renderizado usted mismo o tomar un NSPathControl, forzarlo a dibujar en un contexto que usted controla, y luego convertir ese contexto en una imagen usted mismo.

Pregunta más importante: ¿qué estás tratando de lograr?

+0

esto es webapp para ejecutar en mi intranet.A veces recopilo documentación (artículos de instrucciones, etc.) y estoy cansado de hacer una captura de pantalla cada vez que quiero agregar la ruta a un archivo. llamar a un cgi que devuelve archivos png lo haría más fácil. Podría simplemente escribir el html y el enlace a http://1.2.3.4/cgi?-/System/Library/foo-.png cuando necesite un png para ilustrar una ruta – username

7

Dependiendo del contexto, puede ser razonable usar -dataWithPDFInsideRect: en lugar de generar un PNG.

Por supuesto, si obtiene una imagen (especialmente una imagen de mapa de bits) de un elemento de IU como este para uso web, hay un 95% de posibilidades de que merezca un golpe en la cara del Accesibility Gorilla.

+0

heh heh. y eso es solo si el Gorila de accesibilidad se acuerda de desayunar – username

2

En respuesta al comentario publicado el 17 de mayo: como esta es una aplicación web, me gustaría sugerir un script que convierta la ruta del archivo en un bloque HTML con estilo similar al resultado de la imagen única que originalmente para. Utilizaría iconos estáticos para el disco duro, la carpeta, el archivo y la pequeña flecha gris.

De esta manera se podría decir:

<?php echo prettyPathHTML('/System/Library/CoreServices/Finder.app'); ?> 
+0

El problema es ... que hay muchos íconos para descubrir (como ... miles). sin mencionar, tendré que volver a crear la heurística que usa el sistema operativo para determinar qué icono mostrar para los archivos que no contienen un icns (es decir, la mayoría de los archivos) según la aplicación a la que están asociados. no es divertido. oh sí, y cuando el sistema operativo se actualiza, tengo que hacer todo el trabajo nuevamente. no, gracias – username

+0

¿Iconos genéricos inaceptables, entonces? No lo estás haciendo tan fácil :) –

+0

Sé :(Quiero ser capaz de recomendar a un novato a una página de "cómo hacerlo". Hay más posibilidades de que los íconos que ven coincidan con los íconos del "cómo" a "página web", hay menos posibilidades de que se confunda. – username

Cuestiones relacionadas