Placement d'Images sur des Rectangles

 

/************************************************************************
                CADRES D'IMAGES

  Balayage des images d'un repertoire.
  Chargement des images dans des calques de meme nom + "_".
  Chaque image est placee et redimensionnee selon un "cadre" de meme nom.
  Un cadre est definit par un calque contenant un rectangle sur lequel sera

  placee et redimensionnee l'image. 

  Les images sans cadre sont ignorees.    
 ************************************************************************
 18/11/2010 Habaki V1r01 : Creation
 ************************************************************************/
var jpegOptions  = new JPEGSaveOptions();
var DocMain;   // Document principal
var ImgNum  = 0; // Numero d'image
app.preferences.rulerUnits = Units.CM;
/*----------------------------------------------------------------------*
   Parametres
 *----------------------------------------------------------------------*/
jpegOptions.quality = 12;   // Qualite jpeg
var TargetName  = "tirage1"; // Nom Fichier resultat
/*----------------------------------------------------------------------*
                        Traite un fichier
 *----------------------------------------------------------------------*/
function FileProcess(
        file
        )
{
  var Doc;
  var Layer; // calque image
  var LayerC; // calque cadre
  var Coord, CoordC;
  var V, H, VC, HC, PosX, PosY;
  var RatioH, RatioV;
  var FName;
 
  // Selection fichiers seulement
  if (file instanceof Folder) return(false);
 
  // Calque de cadre
  try {
    FName = file.name.slice(0, -4);
    LayerC = DocMain.artLayers.getByName(FName);
  } catch(ex) {
    return(false);
  }
 
  // Copie l'image dans le clipboard
  Doc = open(file);
  Sel = Doc.selection;
  Sel.selectAll();
  Sel.copy();
  Doc.close(SaveOptions.DONOTSAVECHANGES);
 
  // Coller l'image dans le doc final
  Layer = DocMain.paste();
  Layer.name = FName + "_";
 
  // Lecture dimensions
  // Coord: TopLeftX,TopLeftY,BottomRightX, BottomRightY
  Coord = Layer.bounds;
  H = Coord[2] - Coord[0]; // Largeur
  V = Coord[3] - Coord[1]; // Hauteur
  CoordC = LayerC.bounds;
  HC = CoordC[2] - CoordC[0]; // Largeur
  VC = CoordC[3] - CoordC[1]; // Hauteur
 
  RatioH = 100.0 * HC / H;
  RatioV = 100.0 * VC / V;
  Layer.resize(RatioH, RatioV, AnchorPosition.TOPLEFT);
 
  // Deplacement
  PosX = CoordC[0] - Coord[0];
  PosY = CoordC[1] - Coord[1];
  Layer.translate(PosX, PosY);
  return(true);
}
/*----------------------------------------------------------------------*
   Main
 *----------------------------------------------------------------------*/
try{
 
  var MainDirPath = prompt("Repertoire a traiter ?", "/c/images/docu/argent");
  var MainDir = File(MainDirPath);
 
  // Document resultat
  // Units: cm bpi
  DocMain = app.activeDocument;
 
  // Scan all files in MainDir
  MainDir.getFiles(FileProcess);
 
  // Sauvegarde
  /*
  DocMain.saveAs(new File(MainDirPath + "/"
                          + "Tirage"
                          + "/" + TargetName + ".jpg"),
                          jpegOptions, true);
  */
} catch(ex) {
  alert(ex.message)
}
alert("Fini");

Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés