PDA

View Full Version : Cách đặt các tham số khi tạo action trong Photoshop ???



flyaway
28-07-2008, 03:54 PM
Các bác cho em hỏi cách đặt tham số vào action cho Photoshop:

Để làm rõ em đưa ra bài toán cụ thể thế này:

Em muốn tạo 1 action để tự động chèn chữ ký vào góc ảnh. Cái khó là mỗi ảnh lại có kích thước khác nhau. Chữ ký của em được lưu riêng ra 1 file rồi, Em cần:

1. Scale chữ kỹ đó về 5% chiều rộng của file ảnh đích mà em muốn chèn.
2. Chèn chữ ký đó vào góc phải phía dưới file ảnh (tọa độ góc phải phía dưới là (X,Y) với X,Y tùy kích thước ảnh, đại loại là cách mép dưới 1 tí)

Như vậy để làm 2 thao tác trên thì cần chèn tham số 5% và tham số tọa độ (khó vì các tham số này phải tính toán theo file ảnh đích có kích thước không cố định)

Bác nào biết cách làm giúp em nhé, hoặc có giải pháp nào khác không ạ

Thank các bác

haihoan_love
28-07-2008, 05:42 PM
em nghĩ điều này là ko thể

1045
28-07-2008, 06:09 PM
Đại khái thế này : mở file chữ ký ra , chạy Action (action này hoạt động như sau : chọn file chữ ký , copy , paste vào file hình , lúc này chữ ký sẽ nằm ở giữa hình , tiếp theo là Transfrom chữ ký vào góc hình , transfrom một lần nữa để di chuyển chữ ký lên trên 1 khoảng và dịch sang ngang một khoảng theo ý muốn ). Muốn di chuyển chữ ký về góc hình hoặc di chuyển một khoảng cách theo ý muốn thì phải thay đổi các thông số cho phù hợp.

chughe
28-07-2008, 09:52 PM
Xin phép góp thêm, trước hết bạn cần biết rõ là bao nhiếu kích thước mà bạn cần làm, ví dụ bạn sử dụng cho hay khổ 10x15 và 13x18 thì bạn phải làm hai action cho hai khổ này mỗi action khác nhau một tí, vì action chỉ thực hiện tự động một cách máy móc theo kích thước file lúc đầu mình tạo chứ nó không áp dụng được cho các kích thước khác nhau. lấy ví dụ cho hình 10x15 thì điều đầu tiên là bạn phải cắt hết những hình cần làm thành 10x15 hết để cho các file nó cùng chung một kích thước và độ phân giải sau đó mới đến bước bạn làm và lưu action lại cho ảnh đầu tiên sau đó chỉ việc chạy action cho những hình còn lại vì đã cùng chung kích thước nên nó sẻ chạy theo đúng với file lúc đầu bạn tạo thôi, đối với những kích thước khác cũng như vậy. Chúc bạn thành công!

1045
28-07-2008, 10:27 PM
Nếu mình chỉ cần chữ ký cách biên tấm hình 1 khoảng cách như nhau cho các khổ hình khác nhau thì chỉ cần làm 1 action thôi là đủ .

TheAmateur
29-07-2008, 12:25 AM
Các thành viên mới bây giờ làm biếng tìm kiếm quá. "Ngày xưa" mình có viết 2 bài hướng dẫn đúng mấy việc bạn cần:

1. Tạo PS action: http://vnphoto.net/forums/showthread.php?t=7711
2. Đổi kích thước ảnh hàng loạt: http://vnphoto.net/forums/showthread.php?t=95

flyaway
29-07-2008, 06:07 AM
@TheAmateur: Bác chắc chỉ đọc lướt post của em nên không hiểu được vấn đề em đang nói ạ.

@1045: Em cũng đã làm kiểu bác nhưng làm như vậy em thấy là chỉ đúng với các file có chung kích thước.

@chughe: Em cũng hiểu là như vậy nhưng muốn post lên để xem biết đâu bác nào có cao kiến hoặc có mẹo gì giải quyết được.

Cám ơn các bác nhiều

TheAmateur
29-07-2008, 07:33 AM
flyaway, cách đơn giản nhất là có nhiều action cho ảnh đứng và ngang và các cỡ khác nhau. Theo tôi thì anh chỉ cần 1 set (đứng/ngang) cho web; 1 set (đứng/ngang) cho in... in cũng không mấy nhiều size đâu nhỉ?
Cách nữa thì phải dùng javascript, VBscript và Visual Basic để code ... bác có phải dân programmer, muốn tìm hiểu cách code không?

1045
29-07-2008, 08:06 AM
@TheAmateur: Bác chắc chỉ đọc lướt post của em nên không hiểu được vấn đề em đang nói ạ.

@1045: Em cũng đã làm kiểu bác nhưng làm như vậy em thấy là chỉ đúng với các file có chung kích thước.



Bạn tìm hiểu thêm về transfrom thì sẽ làm được như tôi nói , không phụ thuộc vào khích thước file hoặc chiều đứng hay ngang của file.

bridgehl4
01-08-2008, 09:00 PM
Em nghĩ cách này đúng ý bác: bác dùng script file.

Bác modify theo ý của bác, rồi save mấy cái text ở dưới thành file "XXX. jsx" và copy vào thư mục này: C:\Program Files\Adobe\Adobe Photoshop CS3\Presets\Scripts\

Khởi động lại PS. Vào File-> scripts-> XXX để chạy.


PS: em copy trên mạng nhưng làm biến tìm link lại nên copy nguyên con lại luôn!

------------------------------------
// Add Signature.jsx
// Version 1.0
// Shaun Ivory (shaun@ivory.org)
//
// Feel free to modify this script. If you do anything interesting with it,
// please let me know.

//************************************************** **********************
//
// Constants. Change these if you want to.
//
//************************************************** **********************

// Where to find the signature file
var c_strSignatureFile = "~/Desktop/signature.psd";

// Height of the signature, as a percentage of the height or width of the longest axis.
var c_nSignatureHeightPercent = 3;

// How big should the margin be?
var c_nLeftMarginAsPercentOfImage = 1;
var c_nBottomMarginAsPercentOfImage = 1;

//************************************************** **********************
//
// Actual script.
//
//************************************************** **********************

function Main()
{
// Turn off dialog boxes
displayDialogs = DialogModes.NO;

// Save the ruler units and set them to pixels
var oldRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;

try
{
if (app.documents.length > 0)
{
// Save the original document
docOriginal = activeDocument;

// Open the signature file
var fileUrlShortcut = new File(c_strSignatureFile);
var docSignature = open(fileUrlShortcut);

// Scale the height of the signature to a percentage of the long axis of the original document
var nLongAxis = (docOriginal.width.value > docOriginal.height.value) ? docOriginal.width.value : docOriginal.height.value;
var nSignatureHeight = (nLongAxis * c_nSignatureHeightPercent) / 100;
var nSignatureWidth = (nSignatureHeight * docSignature.width.value) / docSignature.height.value;

// Scale the margins as a percentage of the long axis of the image
var nLeftMargin = (nLongAxis * c_nLeftMarginAsPercentOfImage) / 100;
var nBottomMargin = (nLongAxis * c_nBottomMarginAsPercentOfImage) / 100;

// Resize the watermark image
docSignature.resizeImage(nSignatureWidth, nSignatureHeight, docSignature.resolution, ResampleMethod.BICUBIC);

// Select and copy the signature
docSignature.selection.selectAll();
docSignature.selection.copy();

// Activate the original document
activeDocument = docOriginal;

// Paste the image from the clipboard. We are going to remove this one,
// because we are only using it to find the *actual* size of the pasted
// image. It might not be the same size as the scaled document, because
// photoshop doesn't count areas that have no pixels.
var newLayer = docOriginal.paste();

// Get the width and height of the actual pasted image
var nActualSelectionWidth = newLayer.bounds[2] - newLayer.bounds[0];
var nActualSelectionHeight = newLayer.bounds[3] - newLayer.bounds[1];

// Remove this layer.
newLayer.remove();

// Create a selection rectangle
var selection = Array(
Array(nLeftMargin, parseInt(docOriginal.height.value) - parseInt(nActualSelectionHeight) - nBottomMargin),
Array(nLeftMargin + nActualSelectionWidth, parseInt(docOriginal.height.value) - parseInt(nActualSelectionHeight) - nBottomMargin),
Array(nLeftMargin + nActualSelectionWidth, parseInt(docOriginal.height.value) - nBottomMargin),
Array(nLeftMargin, parseInt(docOriginal.height.value) - nBottomMargin),
Array(nLeftMargin, parseInt(docOriginal.height.value) - parseInt(nActualSelectionHeight) - nBottomMargin));
docOriginal.selection.select(selection);

// Paste into the selection
newLayer = docOriginal.paste(true);

// Close the signature
docSignature.close(SaveOptions.DONOTSAVECHANGES);
}
else
{
alert("You don't have an image opened. Please open an image before running this script.");
}
}
catch (e)
{
alert(e);
}

// Restore the ruler units
preferences.rulerUnits = oldRulerUnits;
}

Main();

flyaway
02-08-2008, 11:03 AM
Chuẩn quá bác bridgehl4 ạ. Em làm được rồi. Cám ơn bác rất nhiều

ngoctaivh
19-04-2012, 09:30 PM
Là lính mới nhìn vào em không biết gì hết, thua !