1

C'est une question un peu compliquée car je ne sais pas par où commencer ni quelle technologie utiliser pour arriver au résultat souhaité. C'est peut-être possible avec Photoshop Extended, mais un script PHP ou AppleScript pourrait aussi faire l'affaire.Script pour exporter les extrémités non transparentes des fichiers PNG

J'ai besoin d'un script avec l'entrée, le processus et la sortie suivants.

Entrée:

Des centaines d'images PNG transparentes sur lesquelles j'ai différentes formes quadrangulaires. Toutes les images auront la même taille de toile mais la forme et la position des quadrilatères varieront. Voici un exemple de ce à quoi ressemble une de ces images.

Quadrilateral image

Traitement:

Le script devrait faire une boucle à travers ces images et de détecter les extrémités approximatives des formes.

Coordinates

Sortie:

La sortie devrait être un fichier texte dans lequel chaque ligne contiendra le nom du fichier image et ses coordonnées associées. Par exemple, une ligne dans cette exportation peut ressembler à ceci.

image-18473003783.png; 27,144; 406,241; 116,297; 468,386 

Vous pouvez avoir deviné que nous voulons créer des cartes d'image pour toutes ces images et que vous souhaitez automatiser le processus. Les données seront insérées dans une base de données MySQL.

Encore une fois je suis ouvert aux suggestions quant à la méthodologie et le langage utilisé pour atteindre le résultat souhaité.

+0

Chaque image possède-t-elle un seul quadrilatère? Y a-t-il des restrictions sur la forme et la couleur du quadrilatère? Est-ce que tous les quadrilatères seront convexes? – outis

Répondre

1

Ce que vous recherchez est des limites de couche. Voici ce dont vous avez besoin en javascript - vous pourriez convertir les informations ici en applescript ou les adapter à vos besoins.

//pref pixels 
app.preferences.rulerUnits = Units.PIXELS; 

// call the source document 
var srcDoc = app.activeDocument; 
var myDocName = srcDoc.name; 

// set current width values 
var W = srcDoc.width.value; 
var H = srcDoc.height.value; 

var x = srcDoc.activeLayer.bounds[0] 
var y = srcDoc.activeLayer.bounds[1] 
var x1 = srcDoc.activeLayer.bounds[2] 
var y1 = srcDoc.activeLayer.bounds[3] 

alert(myDocName + " "+ x + ", " + y + ", " + x1 + ", " + y1) 
Questions connexes