Et un petit dernier proportionnel et sans boites de dialogues qui utilise l outil trait :

RecadrageCropTrait.jsx

Je rajoute le code ici :

Code:
//REDRESSEMENT RECADRAGE avec PROPORTIONS utilisant l outil trait

//J ai recupere la fonction qui permet de trouver l angle sur ps-cripts.com - une idee 
// de Patrick et Mike Hale dans ce topic : http://ps-scripts.com/bb/viewtopic.php?t=841

//Script realise sur https://www.eos-numerique.com/forums/newreply.php?do=newreply&p=653101
//par Beocien ( moi meme ) avec l aide de DomDom_one et Mac64

/*
Ce script sert a redresser l image et a la recadrer 
   
Je l ai calibre a peu pres jusqu a un angle de 12° - sans garantie apres !
 
Mettre le script RecadrageCropTrait.jsx dans ....\Adobe Photoshop CS2\Paramètres prédéfinis\Scripts
et l appeler au moyen d un script .atn
 
 
MODE D EMPLOI :
 
 Utiliser l outil Trait - Maj U - ( cliquez sur l outil Rectangle en maintenant le click 
 et choisir l Outil Trait ) et tracer un trait pour determiner l angle de recadrage.

 
Mon adresse email = hallun@free.fr - Faites moi part des bugs !!!
*/

var strtRulerUnits = preferences.rulerUnits
preferences.rulerUnits = Units.PIXELS



//largeur et hauteur de l image

docH = activeDocument.width
docV = activeDocument.height


// reference open document
var docRef = app.activeDocument;

// find the angle from the line using the line tool ( en utilisant l outil trait )
Angle = findAngle();

Erreur()

Negatif()

if (Angle>45) { Angle = 90 - Angle; }  

// straighten the image  = redresse l image
docRef.rotateCanvas(Angle);

// remove the line used for measuring angle = on supprime le trait et on aplatit
docRef.activeLayer.remove();
docRef.flatten()


AngleRedresse()

RecadreAngle()

app.preferences.rulerUnits = startRulerUnits
app.preferences.typeUnits = startTypeUnits
app.displayDialogs = startDisplayDialogs


function AngleRedresse() {
    
    // Taille du recadrage en fonction de l angle de redressement - de 0° a 14

    if ( Angle <= 1 ) {
             Angle0 = Angle * 1.26; 
        }

    else if ( Angle > 1, Angle <= 2 ) {
            
            Angle0 = Angle * 1.26; 
        }

    else if ( Angle > 2, Angle <= 3 ) {
            
            Angle0 = Angle * 1.22; 
        }

    else if ( Angle > 3, Angle <= 4 ) {
            
            Angle0 = Angle * 1.19; 
        }

    else if ( Angle > 4, Angle <= 5 ) {
            
            Angle0 = Angle * 1.15;  
        }

    else if ( Angle > 5, Angle <= 6 ) {
            
            Angle0 = Angle * 1.13; 
        }

    else if ( Angle > 6, Angle <= 7 ) {
            
            Angle0 = Angle * 1.09;  
        }

    else if ( Angle > 7, Angle <= 8 ) {
            
            Angle0 = Angle * 1.06; 
        }

    else if ( Angle > 8, Angle <= 9 ) {
            
            Angle0 = Angle * 1.04; 
        }

    else if ( Angle > 9, Angle <= 10 ) {
            
            Angle0 = Angle * 1.01; 
        }

    else if ( Angle > 10, Angle <= 11 ) {
            
            Angle0 = Angle * 0.98; 
        }

    else if ( Angle > 11, Angle <= 11.5 ) {
            
            Angle0 = Angle * 0.96; 
        }

    else if ( Angle > 11.5, Angle <= 12 ) {
            
            Angle0 = Angle * 0.95; 
        }

    else if ( Angle > 12, Angle <= 12.5 ) {
            
            Angle0 = Angle * 0.94; 
        }

    else if ( Angle > 12.5, Angle <= 13 ) {
            
            Angle0 = Angle * 0.93; 
        }

    else if ( Angle > 13, Angle <= 14 ) {
            
            Angle0 = Angle * 0.92;
        }

    else if ( Angle > 14 ) {
            alert ( "   LE RESULTAT N EST PAS GARANTIT AU DESSUS D UN ANGLE DE 14 DEGRES !!!!    " + "\n" + "\r" + "\r" + "\t" + "  Vous devriez prendre le temps de CADRER CORRECTEMENT   ??? " );
            alert ( " IL VAUT MIEUX REFAIRE PLUSIEURS FOIS CE SCRIPT AVEC UN ANGLE INFERIEUR !   ")
            
            Angle0 = Angle * 0.73;
        }
}


function Virgule()

//Enleve la virgule de l angle copie et met un point a la place

{

SousChaine = ",";

Resultat = Angle.indexOf(SousChaine);
if(Resultat==-1)
{
Angle = Angle
if ( isNaN(Angle)==true )
    {
    Angle = Window.prompt( 'ERREUR : ' + 'DONNER L ANGLE ' + "\n" + "\n" + "de  1 a 100 " );
    Erreur()
    }

}
else
{
i = Resultat + 1;
Resultat2 = Angle.substring(i, i+8)
j = Resultat - 1;
Resultat1 = Angle.substring(j+1, j - 8)
Point = "."
Angle = (Resultat1 + Point + Resultat2)
if ( isNaN(Angle)==true )
    {
    Angle = Window.prompt( 'ERREUR : ' + 'DONNER L ANGLE ' + "\n" + "\n" + "de  1 a 100 " );
    Erreur()
    }

}

}


function Erreur() // remplace le point la virgule de l angle par un point
{
	if ( isNaN(Angle)==true )
	{
	
	Virgule()
	}
}


function Negatif() 

//si l angle est negatif le remet en positif

{

    if ( Angle < 0 ) {
            Angle = - Angle;
        }

    else {
            Angle = Angle;
        }
}



function RecadreAngle()
{
  Angle1 = Angle0*docH/100
  Angle2 = Angle0*docV/100

  LEFT = Angle1
  TOP = Angle2

  docRef.resizeCanvas( docH - 2*LEFT,docV - 2*TOP)
  docRef.trim(TrimType.TOPLEFT, true, false, true, false)
}


function findAngle(){
   var lineStart = activeDocument.pathItems[0].subPathItems[0].pathPoints[0].anchor;
   var lineEnd = activeDocument.pathItems[0].subPathItems[0].pathPoints[3].anchor;
   
   var a = Math.abs(lineStart[0]-lineEnd[0]);
   var o = Math.abs(lineStart[1]-lineEnd[1]);
   var c = (180/Math.PI) * Math.atan2(o,a);

   if(lineStart[1] < lineEnd[1]){//negative angle
      c = -c;
   };       
   return c;
  
};

:blink: