3 static PyObject* py_edge(PyObject* self, PyObject* args)
5 const unsigned char *image;
14 unsigned char *n_image;
17 if (!PyArg_ParseTuple(args, "(ii)s#", &x, &y, &image, &size)) return NULL;
19 n_image = (char*) malloc(size);
20 for (i=0; i < 2 * x; i++) {
22 n_image[(y - 2) * x + i] = 0;
24 for (i=0; i < y; i++) {
26 n_image[x * i + 1] = 0;
27 n_image[x * i + x - 2] = 0;
28 n_image[x * i + x - 1] = 0;
33 for (i=2; i < x - 2; i++) {
34 for (j=2; j < y - 2; j++) {
35 sum = image[x * j + i - 2] + image[x * j + i - 1] + image[x * j + i + 1] + image[x * j + i + 2] +
36 image[x * (j - 2) + i - 2] + image[x * (j - 2) + i - 1] + image[x * (j - 2) + i] +
37 image[x * (j - 2) + i + 1] + image[x * (j - 2) + i + 2] +
38 image[x * (j - 1) + i - 2] + image[x * (j - 1) + i - 1] + image[x * (j - 1) + i] +
39 image[x * (j - 1) + i + 1] + image[x * (j - 1) + i + 2] +
40 image[x * (j + 2) + i - 2] + image[x * (j + 2) + i - 1] + image[x * (j + 2) + i] +
41 image[x * (j + 2) + i + 1] + image[x * (j + 2) + i + 2] +
42 image[x * (j + 1) + i - 2] + image[x * (j + 1) + i - 1] + image[x * (j + 1) + i] +
43 image[x * (j + 1) + i + 1] + image[x * (j + 1) + i + 2]
44 - (25 * image[x * j + i]);
46 if (sum > 255) sum = 255;
47 n_image[x * j + i] = sum;
53 result = Py_BuildValue("s#", n_image, size);
59 static PyMethodDef myModule_methods[] = {
60 {"edge", py_edge, METH_VARARGS},
66 (void) Py_InitModule("pcf", myModule_methods);