Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 319 432

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» question multiview

question multiview#1380

8Contributeur(s)
sinisrusTarzinCreolsthellierzzd10hElwoodLioAmiDARK
3 Modérateur(s)
K-LElwoodcorto
thellier thelliericon_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
zzd10h zzd10hicon_post
Pas de pb Thellier pour te les envoyer,
pas besoin de mettre ça sur Aminet c'est juste la recompilation des exemples du wiki avec qq petites modifs.
Je viens de mettre l'archive

http://zzd10h.amiga-ng.org/DataType/DataType_Sound.lha

http://zzd10h.amiga-ng.org/DataType/DataType_Image.lha

Si tu vois des gros pb, merci de me le dire, je suis vraiment pas un pro.

Dans cette archive, 2 répertoires

1) Datatype\Image : programme DataType_Image pour avoir les dimensions d'une image
ex : DataType_Image "RAM:Grab.jpg"

2) Datatype\Sound : programme DataType_Sound et DateType_Sound_Debug (qq printf en plus)
ex : DataType_Sound "RAM:son.wav"
D'ailleurs c'est marrant en prenant le jingle de démarrage de AOS4 avec la version debug on voit que le fichier hirasawa.wav fait 55 secondes alors qu'il n'y a que max 20 secondes de son...


Sinisrus vient de me demander de rajouter la possibilité de jouer plusieurs fois ou indéfiniment le son, je vais regarder avec DTA_Repeat et/ou SDTA_Cycles.
Sinisrus, tu as juste à faire make dans 1 des 2 répertoires pour recompiler les programmes.

Thellier, ça marche sur Amiga la DevIL ?


Message édité par : zzd10h / 11-10-2012 18:21
zzd10h zzd10hicon_post
J'ai ajouté 2 parms en entrée de DataType_Sound
nb de cycles et volume (de 0 à 64, defaut 64).

ex Datatype_Sound test.wav 5 32

joue 5 fois le son test.wav à demi volume

je ne me suis pas embété avec SDTA_Cycles, j'ai simplement fait une boucle pour le nb de cycle.

par contre, un truc bizarre, parfois au 1er lancement le volume est à 0. :#

thellier thelliericon_post
>Thellier, ça marche sur Amiga la DevIL ?

Je sais pas j'ai jamais essayé mais elle existe en version os4 sur os4depot et aminet...
Et DevIL pour toutes les petites manip "bourrines" sur des images c le top

Alain
thellier thelliericon_post
Merci zzd10h j'ai récupéré le source = je teste dès que je peut...

Je pense à ces modifs ci dessous:
1) ne pas recréer/libérer le dtobject pour chaque cycle (à tester)
2) calculer le bon nombre de ticks
3) faire du debug à la demande

>pas besoin de mettre ça sur Aminet c'est juste la recompilation des exemples du wiki avec qq petites modifs.
Ben si justement : car il y avait pas sur un aminet un binaire pour faire ça

==========================================
BOOL debug;


debug=(argc > 4 );

[...]

if ((dtobject = NewDTObject(argv[1], DTA_GroupID, GID_SOUND,SDTA_Volume,volume,TAG_END) ))
{
mydtt.MethodID = DTM_TRIGGER; /* Fill in the dtTrigger struct */
mydtt.dtt_GInfo = NULL;
mydtt.dtt_Function = STM_PLAY;
mydtt.dtt_Data = NULL;

res = GetDTAttrs(dtobject,SDTA_SampleLength,&longueur,SDTA_VoiceHeader,&vh,TAG_END);
samplesParSec = (int)vh->vh_SamplesPerSec ;
duree = (50*longueur)/samplesParSec; /* 50 ticks/sec */

if(debug) printf("Longueur %ld\n",longueur);
if(debug) printf("Samples sec %ld\n",samplesParSec);
if(debug) printf("Duree sec %ld\n",duree/50); /* 50 ticks/sec => /50 pour avoir le nb de secondes */

for (i=0;i {
/* The return value of the DTM_TRIGGER method used with the 8svx */
/* sound datatype is undefined in V39. This is likely to change */
/* in future versions of the Amiga operating system. */
dores = DoDTMethodA(dtobject, NULL, NULL, &mydtt);
Delay(duree); /* Let the 8svx sound finish playing. */
} /* fin for nb_cycle */

if(debug) printf("Fini\n");
DisposeDTObject(dtobject);
}
else
{
if(debug) printf("KO, est-ce bien un fichier son ?\n");
return 0;
}
Message édité par : thellier / 08-10-2012 13:49
zzd10h zzd10hicon_post
Merci Alain,
j'ai mis à jour le source/binaire avec tes conseils

Donc maintenant pour le debug il suffit de mettre n'importe quel caractère en 3éme paramétre

DataType_Sound RAM:test.wav 5 64 DEBUG

Donc pour le 1) et 3), c'est OK mais pour le 2) que veux-tu dire ?
Le calcul du delay te semble faux ?

Tony, c'est quoi les FadeIn, FadeOut ?
Lio Lioicon_post
fade in/out c est quand tu enchaines les morceaux, le son du premier morceau diminue jusqu'au morceau suivant qui va augmenter progressivement...
ca permet d'eviter que le volume passe de 0 à 100 entre 2 morceaux, surtout s'ils n'ont pas le même volume !
A1G4/Radeon9000PRO/1Go RAM; X5000/RadeonR7-250x/2Go RAM; AOS4.1FE
thellier thelliericon_post
Ok merci
Oui le nombre de ticks etait legerement faux puisque tu obtenais le
nombre de secondes puis tu le multipliais par 50
on comprends aisement que si le son dure (par exemple) 3 secondes et demi va y avoir
un probleme..

Une fois de plus : pense a le mettre sur Aminet

Pour le fadein out je doute que ce soit possible avec les datatypes...

Alain
zzd10h zzd10hicon_post
Oui je le mettrais sur OS4Depot (en précisant bien que le source vient du wiki et d'Obligement bien sur)
Je l'ai testé sur MorphOS et tout fonctionne sauf le volume (même en mettant la valeur en "dur")
C'est pourquoi je ne le mettrais pas sur Aminet mais juste sur OS4Depot.

Par contre j'ai toujours ce problème quand je lance le prog la 1ére fois sans paramètre, le volume est à 0. Aprés, aux lancements suivants c'est OK.

Tony ou Alain, c'est pareil chez vous ?

J'ai mis à jour une nouvelle archive, maintenant il faut mettre DEBUG en toutes lettres pour avoir les sorties debug.

http://zzd10h.amiga-ng.org/DataType/DataType_Sound.lha

http://zzd10h.amiga-ng.org/DataType/DataType_Image.lha


Message édité par : zzd10h / 11-10-2012 18:22
sinisrus sinisrusicon_post
zzd10h : ici par de problème avec netstat

Le fadeIn fadeOut c'est pour faire des fondu d'entrée et sortie du son

par exemple le son au départ est comme ça =========

avec le FADEIN <=========
avec le FADEOUT ========>

avec les deux <=========>

tu choisi que le son commence à 00:00:00 volume du son à 0 et le son monte progressivement pour arrivé par exemple à volume 50 à 00:00:43 secondes

en faite ce qui serait top au final ça serait s'avoir une commande que l'on pourrai utilisé dans plein de projet comme par exemple :

- un soft de montage video
- un soft de création musical (traker)
- des jeux video

sans ce prendre la tête à tout codé en dur avec cette commande ça serait plus rapide et simple :-)
--
Coin coin... amitheme.amiga-ng.org
Sam460 1,15Ghz - OS4.1FE - Radeon Saphir HD7750 R7 250E - 2Go de ram
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme