php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
gd_pixelate.c
Go to the documentation of this file.
1#include "gd.h"
2
3int gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode)
4{
5 int x, y;
6
7 if (block_size <= 0) {
8 return 0;
9 } else if (block_size == 1) {
10 return 1;
11 }
12 switch (mode) {
14 for (y = 0; y < im->sy; y += block_size) {
15 for (x = 0; x < im->sx; x += block_size) {
16 if (gdImageBoundsSafe(im, x, y)) {
17 int c = gdImageGetPixel(im, x, y);
18 gdImageFilledRectangle(im, x, y, x + block_size - 1, y + block_size - 1, c);
19 }
20 }
21 }
22 break;
24 for (y = 0; y < im->sy; y += block_size) {
25 for (x = 0; x < im->sx; x += block_size) {
26 int a, r, g, b, c;
27 int total;
28 int cx, cy;
29
30 a = r = g = b = c = total = 0;
31 /* sampling */
32 for (cy = 0; cy < block_size; cy++) {
33 for (cx = 0; cx < block_size; cx++) {
34 if (!gdImageBoundsSafe(im, x + cx, y + cy)) {
35 continue;
36 }
37 c = gdImageGetPixel(im, x + cx, y + cy);
38 a += gdImageAlpha(im, c);
39 r += gdImageRed(im, c);
40 g += gdImageGreen(im, c);
41 b += gdImageBlue(im, c);
42 total++;
43 }
44 }
45 /* drawing */
46 if (total > 0) {
47 c = gdImageColorResolveAlpha(im, r / total, g / total, b / total, a / total);
48 gdImageFilledRectangle(im, x, y, x + block_size - 1, y + block_size - 1, c);
49 }
50 }
51 }
52 break;
53 default:
54 return 0;
55 }
56 return 1;
57}
total()
Definition bench.php:374
char * mode
#define gdImageBlue(im, c)
Definition gd.h:775
@ GD_PIXELATE_UPPERLEFT
Definition gd.h:743
@ GD_PIXELATE_AVERAGE
Definition gd.h:744
#define gdImageGreen(im, c)
Definition gd.h:773
#define gdImageAlpha(im, c)
Definition gd.h:777
#define gdImageBoundsSafe(im, x, y)
Definition gd.h:948
#define gdImageRed(im, c)
Definition gd.h:771
gdImage * gdImagePtr
Definition gd.h:248
int gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode)
Definition gd_pixelate.c:3
void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color)
Definition gd.c:2307
int gdImageColorResolveAlpha(gdImagePtr im, int r, int g, int b, int a)
Definition gd.c:539
int gdImageGetPixel(gdImagePtr im, int x, int y)
Definition gd.c:953
int sy
Definition gd.h:174
int sx
Definition gd.h:173
$obj a
Definition test.php:84