FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Zoom d'une partie d'image Emptypar papydall Aujourd'hui à 2:21

» Gestion d'un système client-serveur.
Zoom d'une partie d'image Emptypar Klaus Hier à 23:59

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Zoom d'une partie d'image Emptypar Marc Hier à 12:14

» @Jack
Zoom d'une partie d'image Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Zoom d'une partie d'image Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Zoom d'une partie d'image Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Zoom d'une partie d'image Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Zoom d'une partie d'image Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Zoom d'une partie d'image Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Zoom d'une partie d'image Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Zoom d'une partie d'image Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Zoom d'une partie d'image Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Zoom d'une partie d'image Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Zoom d'une partie d'image Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Zoom d'une partie d'image Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

 

 Zoom d'une partie d'image

Aller en bas 
5 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Zoom d'une partie d'image Empty
MessageSujet: Zoom d'une partie d'image   Zoom d'une partie d'image EmptySam 31 Oct 2020 - 15:22

Zoom d'une zone rectangulaire d'image délimitée à la souris, pour faire ressortir un détail, par exemple:
(gadget sans prétention... et bien entendu on peut adapter tous les paramètres à son goût):
Code:
' Zoom d'une sélection rectangulaire d'image
LABEL Des,Zm
DIM f$,fm$,wi%,hi%,a$,et%,x1,y1,x2,y2,w%,h%,z,w1%,h1%,s2,bw,bh,v,vv
fm$ = "Z:\Toto.bmp": ' (Z:\ = répertoire de manoeuvre, à ajuster)
BORDER_SMALL 0
bw = WIDTH(0)-WIDTH_CLIENT(0): bh = HEIGHT(0)-HEIGHT_CLIENT(0): ' bordures
CAPTION 0,"IMAGE  SOURCE  :": FONT_SIZE 0,12: FONT_BOLD 0
PRINT "Choisir l'image de fond..."
Chimg(): ' choix de l'image source (JPG, BMP) -> f$, wi%, hi%
IF f$ = "" THEN MESSAGE "Pas d'image source, abandon !": TERMINATE
CAPTION 0,f$+" ("+STR$(wi%)+" x "+STR$(hi%)+" pixels)."
WIDTH 0,wi%+bw: HEIGHT 0,hi%+bh+26: FONT_SIZE 0,12: COLOR 0,240,255,255
  IF WIDTH(0)<360 THEN WIDTH 0,360
  FONT_NAME 0,"Consolas": FONT_BOLD 0
PICTURE 1: TOP 1,26: WIDTH 1,wi%: HEIGHT 1,hi%
IMAGE 2
ALPHA 3: TOP 3,2: COLOR 3,255,255,0
  CAPTION 3,"1)            2) x    ,"
BUTTON 4: LEFT 4,LEFT(3)+20: WIDTH 4,90: CAPTION 4,"Délimiter": ON_CLICK 4,Des
SPIN 6: TOP 6,-2: LEFT 6,LEFT(3)+175: WIDTH 6,42: POSITION 6,3
SPIN 7: TOP 7,TOP(6): LEFT 7,LEFT(6)+WIDTH(6)+10: WIDTH 7,40: POSITION 7,0
BUTTON 8: LEFT 8,LEFT(7)+WIDTH(7): CAPTION 8,"Zoomer": ON_CLICK 8,Zm
s2 = 15: SCENE2D s2: HIDE s2: STRETCH_ON s2: ' pour zoom
FORM 20: BORDER_SMALL 20: HIDE 20
PICTURE 21: PARENT 21,20: FULL_SPACE 21
TOP 20,TOP(0)+TOP(1)+bh-bw/2: LEFT 20,LEFT(0)+bw/2
FILE_LOAD 1,f$
2D_TARGET_IS 1: 2D_FILL_OFF
END
' ==============================================================================
Des:
  ' Délimitation rectangulaire de la zone à la souris
  vv = 0
  HIDE 20: CAPTION 0,f$
  FILE_LOAD 1,f$: 2D_TARGET_IS 1: CLIPBOARD_COPY 1
  WHILE MOUSE_LEFT_DOWN(1) = 1: END_WHILE: ' réinit, à tout hasard
  2D_PEN_COLOR 255,0,255: et% = 1: 2D_PEN_WIDTH et%: ' couleur/épaisseur tracé
  CURSOR_CROSS 1
  WHILE MOUSE_LEFT_DOWN(1) = 0: END_WHILE: ' attente clic souris
  WHILE MOUSE_LEFT_UP(1) = 1: END_WHILE: ' réinit
  x1 = MOUSE_X_POSITION(1): y1 = MOUSE_Y_POSITION(1)
  WHILE MOUSE_LEFT_UP(1) = 0
      x2 = MOUSE_X_POSITION(1): y2 = MOUSE_Y_POSITION(1)
      CLIPBOARD_PASTE 1: 2D_RECTANGLE x1,y1,x2,y2
  END_WHILE
  CURSOR_ARROW 1
  IF x1>x2 THEN v = x1: x1 = x2: x2 = v
  IF y1>y2 THEN v = y1: y1 = y2: y2 = v
  x1 = x1+et%: y1 = y1+et%: x2 = x2-et%: y2 = y2-et%
  caption 0,"x1="+STR$(x1)+" y1="+ str$(y1)+"  x2="+str$(x2)+" y2="+str$(y2)
  IF x2<=x1 OR y2<=y1 THEN CLIPBOARD_PASTE 1: RETURN
  2D_IMAGE_COPY 2,x1,y1,x2,y2: vv = 1
RETURN
' ==============================================================================
Zm:
  ' Zoom de la zone sélectionnée:
  ' Valeur entière + décimale éventuelle (1 seule)
  IF vv = 0 THEN RETURN: ' pas de zone délimitée
  IF LEN(STR$(POSITION(7)))>1 THEN MESSAGE "Zoom: une seule décimale !": RETURN
  z = POSITION(6)+POSITION(7)/10
  IF z = 0 THEN MESSAGE "Zoom: valeur positive obligatoire !": RETURN
  w% = x2-x1: h% = y2-y1
  2D_IMAGE_COPY 2,x1,y1,x1+w%,y1+h%: FILE_SAVE 2,fm$
  w1% = INT(w%*z): h1% = INT(h%*z)
  WIDTH s2,w1%: HEIGHT s2,h1%
  FILE_LOAD s2,fm$: SNAPSHOT s2,fm$
  FILE_LOAD 2,fm$: CLIPBOARD_COPY 2: FILE_DELETE fm$
  WIDTH 20,w1%+bw: HEIGHT 20,h1%+bh: FULL_SPACE 21
  CLIPBOARD_PASTE 21: SHOW 20: TO_FOREGROUND 20
  a$ = STR$(w%)+" x "+STR$(h%)+"  X"+STR$(z)+" = "+STR$(w1%)+" x "+STR$(h1%)
  a$ = a$+"  pixels -> clipboard"
  CAPTION 20,a$
RETURN
' ==============================================================================
SUB Chimg()
  ' Choix d'une image Bmp ou Jpg -> path f$, dimensions wi% x hi%
  DIM_LOCAL ob,fm$: fm$ = "Z:\Provy.bmp": ' Z:\ = répertoire de manoeuvre
  ob = 1099: OPEN_DIALOG ob: FILTER ob,"Image Bmp,Jpg|*.bmp;*.jpg"
  f$ = FILE_NAME$(ob): DELETE ob
  IF LEN(f$)<4 THEN f$ = "": EXIT_SUB: ' pas d'image, abandon
  PICTURE ob: HIDE ob: FILE_LOAD ob,f$: FILE_SAVE ob,fm$: DELETE ob
  FILEBIN_OPEN_READ 1,fm$
      FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
      FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1
  FILE_DELETE fm$ 
END_SUB
' ==============================================================================
Usage:
- Choisir l'image source (on peut imaginer un OPEN_DIALOG...)
- Clic le bouton "Délimiter': une croix apparaît, délimiter la zone rectangulaire à la souris
- Choisir le facteur de zoom, puis clic 'Zoomer': affichage de la zone zoomée, qu'on peut déplacer où on veut
 (ou enregistrer: elle est dans le presse-papier).
On peut recommencer en recliquant 'Délimiter', etc.
NB: le facteur de zoom doit être une valeur entière et positive (contrainte SPIN)
le facteur de zoom comporte une partie entière, et une partie fractionnaire (ci-dessous = 3,3)
Zoom d'une partie d'image Goldga11

Edit 16h40
Edit 17h55
Edit 20h10
Edit 20h40 ajouté la possibilité de valeurs non entières pour le facteur de zoom
Maj 1/11


Dernière édition par JL35 le Lun 2 Nov 2020 - 17:07, édité 11 fois
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2691
Date d'inscription : 13/09/2009

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptySam 31 Oct 2020 - 15:52

Incroyable, ce qu'on peut faire avec Panoramic !
Bravo !
cheers cheers cheers
Euh, petit problème :
Zoom d'une partie d'image Jl35-e10
C'est quand on veut refaire plusieurs fois des délimitations...
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptySam 31 Oct 2020 - 16:04

Salut JL35 !

je viens de tester et franchement c'est pas mal du tout ce petit programme.
Et rapide en plus !

Salut Jjn4 !
J'ai rencontré quelques plantages aussi...
Mais après avoir choisi de sauvegarder dans le même dossier que l'image initiale plus de problème !

Affaire à suivre... geek
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptySam 31 Oct 2020 - 16:25

Salut les amis ! et merci d'avoir testé.

Effectivement j'avais eu aussi ce genre de problème, d'abord en testant avec des valeurs de zoom
fractionnaires (x2,5), ça ça ne peut pas marcher, aussi j'ai filtré.
Et aussi quand on fait de nouvelles tentatives, mais je croyais avoir corrigé ça ? en tout cas je.
ne peux pas le rproduire..
l 'Out of system resources' se produisant il me semble quand l'image dans le presse-papier faisait
0 x 0 pixels (les valeurs de zoom non entières se traduisaient par un POSITION(6) = 0).
Je vais regarder encore.

PS je n'arrive pas à reproduire le problème. J'ai fait une ou deux petites modifs mineures, plus esthétiques
qu'autre chose...
En tout cas il faut bien respecter l'ordre des choses:
1) bouton 'Délimiter', puis racer
2) bouton 'Zoomer' après avoir fixé le niveau de zoom.

PS2: je peux reproduire systématiquement l'erreur 'Out of system..' en faisant ceci:
- je lance le programme
- je clique dans l'image (par inadvertance, ou trop pressé)
- je clique le bouton 'Délimiter' -> ERREUR !
Ce qui à mon avis signifie que le clic dans l'image a été mémorisé.
Y a-t-il moyen de réinitialiser la souris au début du s/p Des (traitement du clic sur 'Délimiter')  ?

PS3 (18h): je crois bien avoir réussi à neutraliser le clic sur l'image précédant le clic sur le bouton Délimiter.
(qui provoque l'erreur Out of system resources)
jjn4, si tu veux essayer à nouveau ?
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2385
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptySam 31 Oct 2020 - 19:02

Bonsoir à tous !

Super et bravo JL35 !
J’ai fait quelques tests. Pour le traçage de la zone, il faut faire attention au sens de déplacement de la souris. Il faut que x1 soit inférieur à x2 et idem pour le couple y1/y2.
Sinon, boom !  Crying or Very sad
Tu pourrais ajouter, entre les lignes 45 et 46 (avant le 2D_IMAGE_COPY 2,x1,y1,x2,y2), ceci pour que ce soit toujours vrai :

Code:
 if x1 > x2
     x1 = bin_xor(x1,x2)
     x2 = bin_xor(x1,x2)
     x1 = bin_xor(x1,x2)
  end_if
  
  if y1 > y2
     y1 = bin_xor(y1,y2)
     y2 = bin_xor(y1,y2)
     y1 = bin_xor(y1,y2)
  end_if

Comme ça, tu peux tracer dans tous les sens : de la droite vers la gauche, du bas vers le haut… ça marche à tous les coups.
Je vais faire quelques autres tests.

Merci pour ton partage !


EDIT :
J’ai changé les différentes variables entières en variables réelles, puis j’ai essayé différentes valeurs décimales pour z. Ton programme fonctionne super bien !  cheers Encore bravo !
Voici un exemple pour z = 1.75
Zoom d'une partie d'image Jl_bmp10
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptySam 31 Oct 2020 - 20:15

Bonsoir Marc, et merci pour ton test très complet !

Pour le tracé à l'envers (droite à gauche), j'y avais bien pensé mais pas corrigé. C'est fait, grâce à ta suggestion.
Concernant le taux de zoom, la lecture du SPIN n'autorise pas de valeurs non entières, ça renvoie 0.
Donc il faudrait changer le mode de saisie, mais bon, c'est facile à modifier au besoin
(par exemple un TEXT au lieu d'un SPIN, ou deux SPIN...).

PS Pour faire plaisir à Marc, j'ai ajouté un deuxième SPIN pour la partie fractionnaire du taux de zoom.
Qui peut le plus peut le moins !
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptyDim 1 Nov 2020 - 14:09

C'est pas mal, tu pourrais utiliser ls commandes CURSOR_XXX qui t'éviterait de placer IMAGE_PASTE dans les boucles(mémoire moins sollicitée) et remplacer les PAUSE par DISPLAY(gain de fluidité)
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptyDim 1 Nov 2020 - 14:25

Merci silverman, je vais regarder ça...

Tu as raison et j'adopte tes suggestions (je ne pense jamais à Cursor_xxx...)
J'ai remplacé les PAUSE par des DISPLAY, puis finalement mis les DISPLAY en commentaires,
ça marche très bien, donc plus de temporisations, ça charge peut-être le pc mais après tout
il n'a que ça à faire !
J'ai aussi ajouté un appel à Open_Dialog en tête: choix de l'image source jpg ou bmp, c'est plus souple.
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptyLun 2 Nov 2020 - 16:14

J'ai l'erreur "Out of ressources system". Cette erreur vient de "2D_IMAGE_COPY 2,x1,y1,x2,y2" à la ligne 48.
Panoramic produit cette erreur quand x2<x1. Wink
Sinon, c'est carrement plus fluide cheers
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptyLun 2 Nov 2020 - 16:41

Bonjour silverman,

Bizarre, je n'arrive pas à reproduire cette erreur, et j'avais bien rajouté des tests pour l'éviter, suite à tes remarques
(lignes 45/46, pour que x2 et y2 soient toujours supérieurs à x1 et y1 quel que soit le sens de tracé)...

PS j'ai ajouté un test pour le cas où on ne sélectionnerait qu'une ligne (ou 0) verticale ou horizontale d'image,
ce qui évidement provoque cette erreur (largeur ou hauteur nulle), mais je ne vois rien d'autre.
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptyLun 2 Nov 2020 - 17:44

Maintenant ça fonctionne, plus d'erreur! Very Happy
Voici le code de test que j'avais utilisé:
Code:
dim x1,y1,x2,y2
image 2
' erreur si x2<x1 et y1<>y2
x1= 55
x2= 54
y1= 33
y2= 32
2D_IMAGE_COPY 2,x1,y1,x2,y2
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image EmptyLun 2 Nov 2020 - 17:53

Ah oui effectivement, comme j'enlève l'épaisseur du trait aux mesures ça faisait des valeurs nulles
qui ne plaisent au 2D_IMAGE_COPY !
Ça ne devrait plus pouvoir se produire. Merci à toi et bonne soirée !
Revenir en haut Aller en bas
Contenu sponsorisé





Zoom d'une partie d'image Empty
MessageSujet: Re: Zoom d'une partie d'image   Zoom d'une partie d'image Empty

Revenir en haut Aller en bas
 
Zoom d'une partie d'image
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Zoom sur  Mandelbrot
» Zoom simple
» Zoom sur une portion d'écran
» fonction ZOOM
» Extraire une partie d'image bmp

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: