用 GDLIB 做圖像旋轉
// 省略不重要部份
....
....
imgtype = JPG;
....
File = fopen(Buffer,"rb");
....
....
if(imgtype == JPEG) {
img = gdImageCreateFromJpeg(File);
} else if(imgtype == GIF) {
img = gdImageCreateFromGif(File);
} else if(imgtype == PNG) {
img = gdImageCreateFromPng(File);
} else {
img = gdImageCreateFromWBMP(File);
}
fclose(File);
...
...
// rotate angle
i = 90;
....
aCos = cos (i * .0174532925);
aSin = sin (i * .0174532925);
size_x = gdImageSX(img);
size_y = gdImageSY(img);
switch(i) {
case 180:
if (imgtype == GIF ||
imgtype == WBMP)
new_img = gdImageCreate(size_x,size_y);
else
new_img = gdImageCreateTrueColor(size_x,size_y);
break;
case 90:
case 270:
if (imgtype == GIF ||
imgtype == WBMP)
new_img = gdImageCreate(size_y,size_x);
else
new_img = gdImageCreateTrueColor(size_y,size_x);
break;
default:
aCos = cos (i * .0174532925);
aSin = sin (i * .0174532925);
if (imgtype == GIF ||
imgtype == WBMP)
new_img = gdImageCreate(abs((int)(size_x*aCos))+abs((int)(size_y*aSin)),
abs((int)(size_y*aCos))+abs((int)(size_x*aSin)));
else
new_img = gdImageCreateTrueColor(abs((int)(size_x*aCos))+abs((int)(size_y*aSin)),
abs((int)(size_y*aCos))+abs((int)(size_x*aSin)));
break;
}
....
..
.
翁
|