IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Photoshop programozása, JavaScript extended - alias .jsx
Nimród
post 2008. Feb 25., 01:11
Post #1


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



Sziasztok!

Az évtized rejtélye: maradékot szeretnék visszakapni JavaScript-ben!

Ezt lehet, hogy programozáshoz kívánnátok, de a Photoshop .jsx verziójáról van szó, ezért írok ide. JavaScript extended. Dugig van "Photshop related" parancsokkal. (vagy mikkel?)

Feladat:
- java koma megvizsgálja hány db. réteg van az adott .psd fájlban

- ha a szám páros: alert("páros" );
- ha nem: alert("páratlan");

No, nem a felugró ablak a lényeg, feladat híján így tudhatjuk csak meg, hogy sikerült e vagy sem rolleyes.gif . Aztán meg lehet használni!

Arra gondoltam, hogy elosztom a documentumban lévő rétegek számát kettővel. Ha a maradék nulla: páros, ha nem, akkor nem. De nem tudom, hogy szedhetem ki a maradékot egy JavaScriptből!!! (pl. Pascalban mod, azt hiszem...)

De nem is ide akartam írni! Hogy történt ez?
Go to the top of the page
 
+Quote Post
BlackY
post 2008. Feb 25., 09:25
Post #2


Commander 1337
*****

Group: törzstag
Posts: 5506
Joined: 03. May 25.
From: Szeged
Member No.: 38



A % a maradékos osztás maradékának operátora. Tehát:
CODE
if(ize % 2) {
  alert('páratlan');
}
else {
  alert('páros');
}


Sima JS-ben működik, PS-ről fogalmam sincs.

BlackY


--------------------
BlackY
Blog
Új téma vagy tutorial
Szerkesztő | Törzstag
--
Hogyan kérdezzünk?
Üvöltsük meg együtt a holdat: Wuff :D
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Feb 25., 13:46
Post #3


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



Köszönöm! Ez gyors volt, és működik is.

Van egy másik probléma, lehet, hogy találkoztatok vele. Egy script futtatása után (mindegy mit csinál) az aktív dokumentum kimászik a PS felületéről. Azaz csak az alja lóg be és nem lehet ablakként kezelni, csak "F" után valamelyik teljesképernyős módban. Van róla kép is csak nem tudom, hogy kell ide berakni.

Go to the top of the page
 
+Quote Post
Halfbreed
post 2008. Feb 25., 22:46
Post #4


alias Pyro
***

Group: haladó tag
Posts: 788
Joined: 06. January 10.
From: Miskolc
Member No.: 1792



Előfordult már párszor, ezt úgy hívják szívás. Fájl > Mentés, majd nyisd meg újra. wink.gif


--------------------
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Feb 26., 15:36
Post #5


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



OK biggrin.gif Ctrl+S Ctrl+O = +oldás up.gif
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Feb 27., 01:15
Post #6


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



Írtam egy scriptet amely egy .psd fájl rétegeit helyezné át egy új fájlba.
Az új fájlt az eredeti méretei alapján hozná létre. Vissza az eredeti fájlba: legalsó
réteget kivág; irány az új fájl: itt beilleszt; amíg van réteg az eredeti fájlban.

Aztán majd mentést kellene bele írni, stb.. De majd akkor ha nem feltételes módban
lesz a felső három sor. Szerintetek mi lehet a gond? Nagyon sötét vagyok és nem
veszek észre olyasmit, amit illene? Itt e script:

CODE
#target photoshop
app.bringToFront()

if (app.documents.length < 1)
{alert("Nincs nyitott dokumentum")}

else
{
//docref a nyitott fájl változója. Ő vele
//hivatkozunk majd a másolandó rétegeket tartal-
//mazó fájlra.
var docref = app.activeDocument;

//var docref = app.documents[0]; /* így is jó talán */


//Új fájl az fenti paraméterekkel:
//Ebbe a fájlba kellene majd a rétegeket másolni,
//de ez a fájl nem jön létre. Miért???
//Nincs error üzenet
var newDoc = app.documetns.add(docref.length, docref.heigth, docref.resolution, "Új dokumentum");
}


//Ha helyesen fut most két fájl van,az
//elsőből a másodikba helyezzük át a rétegeket.


while (docref.artLayers.length > 0) //Amoig van mit kivágni...
{

//Aktiváljuk az eredeti doksit
app.activeDocument = docref;

//Ez a "legalsó" réteg.
var layRef = docref.artLayers[0];
//Ha a 0. réteg Background,
//akkor alakítsuk sima réteggé,
//hogy kivághassuk
if (layRef.isBackgroundLayer = true)
{layRef.isBackgroundLayer = false}

else {
docref.activeLayer = layRef; //Ki van jelölve a mindenkori 0. réteg.
docref.layRef.cut(); //Ki van vágva.
}

//Második fájlt aktívvá tenni:
app.activeDocument = newDoc;
newDoc.activeLayer = newDoc.layers[0]; //BG réteg kiválasztva. (Ugye??)
//Na az alsó sorban egyáltalán nem vagyok bíztos.
newDoc.artLayers.paste();

}



És nem méltóztatik működni.
Igyekeztem érthetővé tenni a komentekkel, leírni, hogy mire gondolok, remélem használható valamire!



This post has been edited by Nimród: 2008. Feb 27., 01:19
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Feb 27., 13:00
Post #7


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



while (docref.artLayers.length > 1)


Így helyes, mert 0 réteg soha nem lesz. Úgy emlékszem kijavítottam....
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Feb 28., 02:42
Post #8


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



gondolkodik.gif Most döbbentem rá, hogy réteget nem tudok kivágni. Azaz PS nem tud. Huh... Ez mindjárt más megvilágitásba helyezi az egészet. Meg egynéhány egyéb dolog. Lehet h még ma felrakok egy új változatot, ha nem működik az sem.
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Mar 1., 13:01
Post #9


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



Sokat akar a szarka, gondoltam amikor ránéztem s fenti kódra. A probléma sokkal mélyebben van.

CODE
var docref = app.acitveDocument;

app.documetns.add(docref.width, docref.heigth, docref.resolution, "Új dokumentum");

docref = null;


Itt a második sorban "undefined is not an object" hibaüzenet jön a szerkesztő programtól. Segítsen valaki lécci, mert nem tudom hova csűrnicsavarni. Működnie kellene.
Go to the top of the page
 
+Quote Post
BlackY
post 2008. Mar 1., 13:28
Post #10


Commander 1337
*****

Group: törzstag
Posts: 5506
Joined: 03. May 25.
From: Szeged
Member No.: 38



documetns
helyett tippre documents-nek kéne lennie...

(Amúgy hányas verziótól lehet ilyeneket művelni és egész pontosan hogyan? Ha röviden ezt leírnád, nagyobb segítség tudnék lenni, ha tesztelhetném is ezeket wink.gif És nem utolsó sorban érdekes tutorial lehetne, ami a PS és a JavaScript kategóriákban is lenne wink.gif )

BlackY


--------------------
BlackY
Blog
Új téma vagy tutorial
Szerkesztő | Törzstag
--
Hogyan kérdezzünk?
Üvöltsük meg együtt a holdat: Wuff :D
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Mar 2., 13:51
Post #11


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



Megigérem, hogy aludni is fogok a jövőben biggrin.gifbiggrin.gif:D wháháháhá...

CS2 nél találkoztam vele előbbször. ExtendScript-nek nevezik ezt az implementációt. Minden infót megtalálsz az ~Adobe\Adobe Photoshop CS(akármennyi)\Scripting Guide mappában.
Go to the top of the page
 
+Quote Post
BlackY
post 2008. Mar 2., 22:06
Post #12


Commander 1337
*****

Group: törzstag
Posts: 5506
Joined: 03. May 25.
From: Szeged
Member No.: 38



Majd valamikor ezt megnézem, csak ahoz előbb updatelnem kell a PS-em (PS 7-et használok, arra, amire nekem kell sok is, nem bajlódom CS-kkel).

BlackY


--------------------
BlackY
Blog
Új téma vagy tutorial
Szerkesztő | Törzstag
--
Hogyan kérdezzünk?
Üvöltsük meg együtt a holdat: Wuff :D
Go to the top of the page
 
+Quote Post
Nimród
post 2008. Mar 3., 18:54
Post #13


új tag
*

Group: tag
Posts: 12
Joined: 08. February 22.
Member No.: 5188



Íháá! Nah itt van egy működő kód, DE(!)

CODE
#target photoshop
app.bringToFront();

var docRef = app.documents[0];

app.documents.add(docRef.width, docRef.height, docRef.resolution, "Target File");
var docTar = app.documents[1];

app.activeDocument = docRef;
docRef.activeLayer = docRef.layers[docRef.layers.length-1];
docRef.artLayers.add();


Amit tesz:

Lemásol egy nyitott documentumot. (Méret, stb...)

Visszamegy az eredeti fájlba, kijelöli a B.Ground layert, majd hozzáad egy újabb layert.(Sok rétegből álló fájl kell neki).
Így az új rétegnek a BG fölé kellene kerülnie, de nem így teszi, hanem legfelűlre kerül. Nem oda kell.

Ha gondolod leírom egy mailben a telyes feladatot amiről szó van BlackY. Mert ezek ugye töredékek...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 



Lo-Fi Version Time is now: 2012. May 23. - 10:42

Harder - webdesigner blog | keresőoptimalizálás | honlapkészítés