website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » question multiview


Posté : 08-10-2012 11:27 icone du post

@zzd10h
Merci pour la compilation
Je suis intéressé par le binaire et le source que tu as obtenu : as tu pensé à le mettre sur aminet car cela semble être un programme utile que tout le monde veut.
Par ailleurs un autre truc super, en dehors des datatypes, c'est DevIL (Developer's Image Library) qui permet de charger/modifier quantité de formats d'images

Voici un prog que j'avais fait sur PC pour enlever des marges à une image quelconque : il doit être recompilable sur DevIL/Os4...
La syntaxe est cutmargin x1 y1 x2 y2 filename filename2
avec x1 la marge gauche en pixels à enlever,x2 la droite,etc...

J'avais un besoin spécifique sur des images : c'étais enlever des marges à des images = enlever un en-tête, enlever un cadre,etc...
Evidemment ont peut recadrer manuellement depuis n'importe quel programme de dessin mais je recherchais une commande Dos PC qui le fasse sans intervention humaine sur des centaines d'images
Donc j'ai fait un petit programme cutmargin.exe basé sur la library DevIL.dll
Comme cela on peut traiter 500 fichiers en mettant 500 fois la commande dans un fichier avec les 500 noms de fichiers et les bon paramétres :
cutmargin.exe 38 230 586 255 4763.png _4763.png
cutmargin.exe 38 230 586 255 4770.png _4770.png
cutmargin.exe 38 230 586 255 80137.png _80137.png
cutmargin.exe 38 230 586 255 80211.png _80211.png
cutmargin.exe 38 230 586 255 80212.png _80212.png
cutmargin.exe 38 230 586 255 80224.png _80224.png
cutmargin.exe 38 230 586 255 80291.png _80291.png
cutmargin.exe 38 230 586 255 80302.png _80302.png
cutmargin.exe 38 230 586 255 80546.png _80546.png
cutmargin.exe 38 230 586 255 81316.png _81316.png
cutmargin.exe 38 230 586 255 81376.png _81376.png
cutmargin.exe 38 230 586 255 81433.png _81433.png
cutmargin.exe 38 230 586 255 81923.png _81923.png
cutmargin.exe 38 230 586 255 82103.png _82103.png
cutmargin.exe 38 230 586 255 82285.png _82285.png
cutmargin.exe 38 230 586 255 82288.png _82288.png
....
enleve
38 pixels à gauche
230 en haut
586 à gauche
255 en bas
à l'image 4763.png
et la sauvegarde dans _4763.png
etc...
usage: copies d'écrans, copies d'écrans de sites web, carte postales, scans de bouquins, etc...
Je m'en étais servi avec des captures écrans de site Web (automatisées elles aussi avec l'utilitairePC IECapt.exe)


Alain


======================================
#!!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 / 08-10-2012 11:28

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1380&forum=14