PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl für Gimp



klaus_harrer
28-12-2003, 22:57
Hallo

Ich hoffe einer hat davon Ahnung. Ich möchte mit einen Perl Script zwei Layer erzeugen und für einen layer eine Ebenenmaske.



#!/usr/bin/perl -w

use Gimp;
use Gimp::Fu;

sub img_uni {
my ($size, $color) = @_;

# Create a new image
$img = Gimp->gimp_image_new($size, $size, RGB);

# Create a new layer
$layer = Gimp->gimp_layer_new($img, $size, $size, RGB,
"Layer 1", 100, NORMAL_MODE);

# add second layer

$layer0 = Gimp->gimp_layer_new($img, $size, $size, RGB,
"Layer 2", 100, NORMAL_MODE);

# add the layer to the image
Gimp->gimp_image_add_layer($img, $layer, -1);

Gimp->gimp_image_add_layer($img, $layer0, 0);

# Set the background to the required color
Gimp->gimp_palette_set_background($color);
Gimp->gimp_palette_set_foreground([255,255,255]);

# Paint the layer
Gimp->gimp_edit_fill($layer, BG_IMAGE_FILL);
Gimp->gimp_edit_fill($layer0, FG_IMAGE_FILL);

#Add the alpha channel and layer mask
Gimp->gimp_layer_add_alpha($layer0);
Gimp->gimp_layer_create_mask($layer0, WHITE_MASK); Hier liegt wahrscheinlich der Fehler
Gimp->gimp_layer_get_edit_mask($layer);
# Return the image
return $img;
}

register
"img_uni", # fill in name
"Create a uniform image", # a small description
"A tutorial script", # a help text
"Dov Grobgeld", # Your name
"Dov Grobgeld (c)", # Your copyright
"1999-05-14", # Date
"<Toolbox>/Xtns/Render/Uni...", # menu path
"*", # Image types
[
[PF_INT, "size", "Img size", 100],
[PF_COLOR, "color", "Img color", [40,124,204]]
],
\&img_uni;

exit main();



Problem es wird keine Ebenenmaske erzeugt.

Mfg

samsara
30-12-2003, 12:55
Original geschrieben von klaus_harrer
Ich hoffe einer hat davon Ahnung.

Nein, habe ich nicht, aber...



Gimp->gimp_layer_create_mask($layer0, WHITE_MASK);

...was passiert, wenn Du WHITE_MASK mit Gaensefuesschen versiehst?

Samsara

msi
30-12-2003, 13:51
Original geschrieben von samsara
Nein, habe ich nicht, aber...



...was passiert, wenn Du WHITE_MASK mit Gaensefuesschen versiehst?

Samsara

ich würd mal sagen das WHITE_MASK ist eine Konstante und es stimmt schon so.

klaus_harrer
30-12-2003, 15:43
Hallo

Da ich in Perl nicht so fit bin. Hier die Anleitung

http://www.gm4t9.de/gimp/tut03/index.html

Da aber das Tutorial logisch aufgebaut ist braucht man in Perl nicht so fit zu sein. Vieleicht lest ihr mehr aus den Tutorial raus als ich?

Mfg
Klaus

klaus_harrer
30-12-2003, 22:30
Hallo

Nach langer Recherche habe ich es selbst herausgefunden:



#!/usr/bin/perl -w

use Gimp;
use Gimp::Fu;

sub img_uni {
my ($size, $color) = @_;

# Create a new image
$img = Gimp->gimp_image_new($size, $size, RGB);

# Create a new layer
$layer = Gimp->gimp_layer_new($img, $size, $size, RGB,
"Layer 1", 100, NORMAL_MODE);

# add second layer

$layer0 = Gimp->gimp_layer_new($img, $size, $size, RGB,
"Layer 2", 100, NORMAL_MODE);

# add the layer to the image
Gimp->gimp_image_add_layer($img, $layer, -1);

Gimp->gimp_image_add_layer($img, $layer0, 0);

# Set the background to the required color
Gimp->gimp_palette_set_background($color);
Gimp->gimp_palette_set_foreground([255,255,255]);

# Paint the layer
Gimp->gimp_edit_fill($layer, BG_IMAGE_FILL);
Gimp->gimp_edit_fill($layer0, FG_IMAGE_FILL);

#Add the alpha channel and layer mask
Gimp->gimp_layer_add_alpha($layer0);
$layer_mask = Gimp->gimp_layer_create_mask($layer0, WHITE_MASK);
Gimp->gimp_image_add_layer_mask($img, $layer0, $layer_mask);
Gimp->gimp_layer_get_edit_mask($layer);
# Return the image
return $img;
}

register
"img_uni", # fill in name
"Create a uniform image", # a small description
"A tutorial script", # a help text
"Dov Grobgeld", # Your name
"Dov Grobgeld (c)", # Your copyright
"1999-05-14", # Date
"<Toolbox>/Xtns/Render/Uni...", # menu path
"*", # Image types
[
[PF_INT, "size", "Img size", 100],
[PF_COLOR, "color", "Img color", [40,124,204]]
],
\&img_uni;

exit main();


MfG
Klaus