我想设置一个像素GIMP,但我无法弄清楚如何指定的像素值。
按照GIMP插件API ,它说:
gboolean gimp_drawable_set_pixel (gint32 drawable_ID,
gint x_coord,
gint y_coord,
gint num_channels,
const guint8 *pixel);
如果我这样做,例如:
const guint8 *pixel;
pixel = (guint8 *) 0;
gboolean s;
s = gimp_drawable_set_pixel (layer, 5, 5, 3, pixel);
printf ("Was the pixel set?: %i", s);
像素未设置,s是零。
任何人都可以算一个出来?
爱,路易丝的手
这是我与Makefile中使用的代码:
#include <libgimp/gimp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void
query (void)
{
static GimpParamDef args[] =
{
{
GIMP_PDB_INT32,
"run-mode",
"Run mode"
},
};
gimp_install_procedure (
"plug-in-hello",
"Hello, world!",
"Displays \"Hello, world!\" in a dialog",
"David Neary",
"Copyright David Neary",
"2004",
"_Hello world...",
NULL,
GIMP_PLUGIN,
G_N_ELEMENTS (args), 0,
args, NULL);
gimp_plugin_menu_register ("plug-in-hello",
"<Image>/Filters/Misc");
}
static void
run (const gchar *name,
gint nparams,
const GimpParam *param,
gint *nreturn_vals,
GimpParam **return_vals)
{
static GimpParam values[1];
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
GimpRunMode run_mode;
gint32 image;
gint32 layer;
gint32 display;
/* Setting mandatory output values */
*nreturn_vals = 1;
*return_vals = values;
values[0].type = GIMP_PDB_STATUS;
values[0].data.d_status = status;
/* Getting run_mode - we won't display a dialog if
* we are in NONINTERACTIVE mode */
run_mode = param[0].data.d_int32;
image = gimp_image_new (800, 600, GIMP_RGB);
layer = gimp_layer_new (image,
"foo",
800, 600,
GIMP_RGBA_IMAGE,
100.0,
GIMP_NORMAL_MODE);
gimp_image_add_layer (image, layer, 0);
gboolean s;
guint8 pixel[] = { 0xff, 0, 0, 0xff };
s = gimp_drawable_set_pixel (layer, 5, 5, 4, (guint8 *)pixel );
printf ("Was the pixel set?: %i", s);
display = gimp_display_new (image);
if (run_mode != GIMP_RUN_NONINTERACTIVE)
g_message("Hello, world!\n");
}
GimpPlugInInfo PLUG_IN_INFO =
{
NULL,
NULL,
query,
run
};
MAIN()
Makefile文件
CC = gcc
CFLAGS = -std=c99 -O2 -Wall \
-I/usr/include/gimp-2.0 \
-I/usr/include/glib-2.0 \
-I/usr/lib64/glib-2.0/include \
-I/usr/include/gtk-2.0 \
-I/usr/lib64/gtk-2.0/include \
-I/usr/include/atk-1.0 \
-I/usr/include/cairo \
-I/usr/include/pango-1.0 \
-I/usr/include/pixman-1 \
-I/usr/include/freetype2 \
-I/usr/include/libpng12
LDFLAGS = -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 \
-lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 \
-lgimpbase-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 \
-lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 \
-lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 \
-lgmodule-2.0 -lglib-2.0
files = main.o
all: main
main: $(files)
$(CC) $(CFLAGS) $(files) $(LDFLAGS) -o main
install:
gimptool-2.0 --install main.c
%.o: %.c Makefile
$(CC) -c $(CFLAGS) $<
clean:
rm -f *.o
rm -f *~
rm -f main
.PHONY: all clean
更新:现在,该代码根据意见修正,所以现在它的工作原理。 它吸引了红色像素。