سؤال

أتطلع إلى إجراء إجراء فوتوشوب (ربما هذا غير ممكن ، ستكون أي توصيات تطبيق أخرى مفيدة أيضًا). أريد أن ألتقط مجموعة من الصور وجعلها حصة معينة ، على سبيل المثال: 4: 3.

لذلك لدي صورة بعرض 150 بكسل على ارتفاع 200 بكسل. ما أود أن يحدث هو أن قماش الصورة مصنوع من 267 بكسل ، مع المنطقة الجديدة المملوءة بلون معين.

لذلك هناك احتمالان يمكنني التفكير فيهما:

1) يمكن أن تفعل إجراءات Photoshop ذلك ، لكن يجب أن أسحب الارتفاع الحالي ، مضاعفة بمقدار 1.333333 ثم وضع هذه القيمة في مربع العرض لتغيير حجم القماش. هل من الممكن حساب القيم في إجراءات Photoshop؟

2) بعض التطبيقات الأخرى لديها هذه الميزة مدمجة في.

أي مساعدة يحظى بتقدير كبير.

هل كانت مفيدة؟

المحلول

واو ، أرى الآن (بعد كتابة الإجابة) أن هذا طلب منذ فترة طويلة. . . اوه حسناً. هذا البرنامج النصي يفعل الخدعة.

سيؤدي هذا البرنامج النصي Photoshop إلى تغيير حجم قماش أي صورة بحيث يكون له نسبة عرض إلى ارتفاع 4: 5. يمكنك تغيير نسبة العرض إلى الارتفاع المطبقة عن طريق تغيير Arwidth و Arheight. سيتم ضبط لون التعبئة على لون الخلفية الحالي. يمكنك إنشاء إجراء لفتح ملف ، وتطبيق هذا البرنامج النصي ، ثم أغلق الملف للقيام بعملية دفعة.

إغلاق فوتوشوب.
انسخ هذا javaScript إلى ملف جديد يسمى "تغيير حجم canvas.jsx" في مجلد Preshop's Presets Scripts.
ابدأ Photoshop وفي قائمة البرامج النصية - يجب أن تظهر.

#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);
}

نصائح أخرى

ما هي اللغات التي تعرفها؟ يحتوي ImageMagick على أدوات سطر الأوامر التي يمكنها القيام بذلك ، لكنك تحتاج إلى معرفة لغة نصية للحصول على القيم وحساب الأدوات الجديدة.

لـ .NET ، منتج شركتي ، صورة dotimage, ، مجاني ويمكنه القيام بذلك (بحاجة إلى معرفة C# أو VB.NET)

اهتم بذلك الإجابة المقبولة من @user268911 قد لا تعمل من أجلك إذا كانت الصورة المصدر تحتوي على وحدات بيكسل/بوصة مختلفة عن 72. لأن ال unitvalue.convert تعمل الوظيفة بشكل صحيح فقط مع 72 بكسل/بوصة. للتأكد من أن التحويل صحيح مقابل قيمة بكسل/بوصة ، قم بتعيين وحدة قاعدة الملكية على النحو التالي:

 ...
 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");
 ...

لمزيد من التفاصيل حول التحويل ، انظر "تحويل البكسل والقيم المئوية" قسم دليل أدوات Adobe JavaScript.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top