Hello
Pour ceux qui programment je vous conseille aussi la library DevIL (sur os4depot) qui avec qques lignes de code fait tout les trucs dont vous parlez
Moi je m'en sers sur PC mais je l'ai jamais essayée sur Amiga
Par exemple pour enlever des marges à une image j'ai fait un prog "cutmargin" comme ceci ci dessous
Si qqun veut recompiler sur os4 :-)
usage : cutmargin x1 y1 x2 y2 filename filename2
#!!include! >IL/il.h>
#!!include! >string.h>
int main(int argc, char *argv[])
{
unsigned char filename[512];
unsigned char filename2[512];
ILuint id1,id2;
ILint bpp,format,type,depth;
ILboolean success;
int w,h,w2,h2;
int x1,y1,x2,y2;
if (argc < 6)
{
printf("cutmargin x1 y1 x2 y2 filename filename2\n");
return -1;
}
sscanf(argv[1],"%d",&x1);
sscanf(argv[2],"%d",&y1);
sscanf(argv[3],"%d",&x2);
sscanf(argv[4],"%d",&y2);
strcpy(filename,argv[5]);
if (argc >= 7)
strcpy(filename2,argv[6]);
else
strcpy(filename,filename2);
if (ilGetInteger(IL_VERSION_NUM) < IL_VERSION)
return -1;
ilInit();
ilGenImages(1,&id1);
ilBindImage(id1);
success=ilLoadImage((const ILstring)filename);
ilConvertImage(IL_RGB, IL_UNSIGNED_BYTE);
h =ilGetInteger(IL_IMAGE_HEIGHT);
w =ilGetInteger(IL_IMAGE_WIDTH);
bpp =ilGetInteger(IL_IMAGE_BPP);
format=ilGetInteger(IL_IMAGE_FORMAT);
depth =ilGetInteger(IL_IMAGE_DEPTH);
type =ilGetInteger(IL_IMAGE_TYPE);
w2=w-x1-x2;
h2=h-y1-y2;
printf("cutmargin <%s> (%dX%d) %d %d %d %d to <%s> (%dX%d)\n",filename,w,h,x1,y1,x2,y2,filename2,w2,h2);
ilGenImages(1,&id2);
ilBindImage(id2);
ilTexImage(w2, h2, depth, bpp, format, type, (void*)NULL );
success= ilBlit(id1,0,0,0,x1,y1,0,w2,h2,depth);
ilSaveImage((const ILstring)filename2);
ilDeleteImages(1, &id1);
ilDeleteImages(1, &id2);
return 0;
}
Message édité par : thellier / 29-10-2012 10:17