Question

Je cherche à faire une action de photoshop (peut-être cela est impossible, il serait utile de toutes les autres recommandations d'application ainsi). Je veux prendre une collection de photos et de les faire une certaine ration d'aspect, ex: 4: 3.

J'ai donc une image qui est 150px de large par 200px élevé. Ce que je voudrais arriver est fait est la toile de l'image à large 267px, avec la nouvelle zone remplie d'une certaine couleur.

Il y a donc deux possibilités que je peux penser:

1) actions Photoshop pourraient le faire, mais je dois tirer la hauteur actuelle, il faut multiplier par 1,333333 puis mettre cette valeur dans la zone largeur de la toile resize. Est-il possible d'avoir des valeurs calculées dans des actions Photoshop?

2) Une autre application a cette fonctionnalité intégrée.

Toute aide est grandement appréciée.

Était-ce utile?

La solution

Wow, je vois maintenant (après avoir écrit la réponse) que cela a été demandé depuis longtemps. . . tant pis. Ce script fait le tour.

Ce script Photoshop redimensionne la toile de toute image de sorte qu'il a un rapport 4: 5 aspect. Vous pouvez modifier le rapport d'aspect appliqué en changeant arWidth et arHeight. La couleur de remplissage sera réglé sur la couleur d'arrière-plan en cours. Vous pouvez créer une action pour ouvrir un fichier, appliquer ce script, puis fermez le fichier pour effectuer un traitement par lots.

Arrêter Photoshop.
Copiez ce javascript dans un nouveau fichier nommé « Resize Canvas.jsx » dans Presets de Photoshop \ Scripts dossier.
Lancez Photoshop et dans le fichier -. Menu Scripts il devrait apparaître

#target photoshop

main ();

function main ()
{
    if (app.documents.length < 1)
    {
        alert ("No document open to resize.");
        return;
    }

    // These can be changed to create images with different aspect ratios.
    var arHeight = 4;
    var arWidth = 5;

    // Apply the resize to Photoshop's active (selected) document.
    var doc = app.activeDocument;

    // Get the image size in pixels.
    var pixelWidth = new UnitValue (doc.width, doc.width.type);
    var pixelHeight = new UnitValue (doc.height, doc.height.type);
    pixelWidth.convert ('px');
    pixelHeight.convert ('px');

    // Determine the target aspect ratio and the current aspect ratio of the image.
    var targetAr = arWidth / arHeight;
    var sourceAr = pixelWidth / pixelHeight;

    // Start by setting the current dimensions.
    var resizedWidth = pixelWidth;
    var resizedHeight = pixelHeight;

    // The source image aspect ratio determines which dimension, if any, needs to be changed.
    if (sourceAr < targetAr)
        resizedWidth = (arWidth * pixelHeight) / arHeight;
    else
        resizedHeight = (arHeight * pixelWidth) / arWidth;

    // Apply the change to the image.
    doc.resizeCanvas (resizedWidth, resizedHeight, AnchorPosition.MIDDLECENTER);
}

Autres conseils

Quelles langues connaissez-vous? ImageMagick dispose d'outils de ligne de commande qui peut le faire, mais vous aurez besoin de connaître un langage de script pour obtenir les valeurs et calculer les nouveaux.

Pour .NET, mon produit de l'entreprise, DotImage photo , est libre et peut le faire (besoin de connaître C # ou VB.NET)

la réponse acceptée de @ user268911 peut ne pas fonctionner pour vous si l'image source a différents pixels / pouce que 72. Parce que le UnitValue.convert fonctionne correctement que la fonction 72 px / pouce. Pour être sûr que la conversion est correcte pour toujours valeur pixel / pouce, jeu BaseUnit propriété comme suit:

 ...
 var pixelWidth = new UnitValue (doc.width, doc.width.type);
 pixelWidth.baseUnit = UnitValue (doc.width.baseUnit, "in");
 var pixelHeight = new UnitValue (doc.height, doc.height.type);
 pixelHeight.baseUnit = UnitValue (doc.height.baseUnit, "in");
 ...

Pour plus de détails au sujet de la conversion de voir la section « Conversion de valeurs de pixels et en pourcentage » de Guide Outils Adobe JavaScript .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top