Crop Crop 1.06 ! Pour recadrer vos photos !

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Ar-S »

Je viens de mettre à jour le programme.
J'ai testé avec 4 situations :
- 1 Image plus large que l'ecran
- 1 Image plus haute que l'ecran
- 1 Image plus large et haute que l'ecran
- 1 image moins haute et large que l'ecran

Tout à marché.
En espérant LSI que le soucis ne viennent pas du dual screen.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Le Soldat Inconnu »

Pourquoi tu n'utilises pas la fonction Desktop de PB ?

Parce que la, ça redimensionne suivant la taille de l'écran secondaire.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Ar-S »

Je viens de modifier en conséquence.
Je pensais que GetSystemMetrics_(0) retournerait par défaut la largeur de l'écran principal.

Si tu peux re-tester (archive ré-uppée). Tout devrait passer maintenant.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Le Soldat Inconnu »

Tiens mon grand :mrgreen:

C'est pas encore super parfait mais c'est déjà pas mal, et ça marche en multi-écran

Code : Tout sélectionner

UseJPEGImageDecoder()
UsePNGImageDecoder()

Enumeration
	
	#Ouvrir = 0
	#Fermer
	#Quitter
	#FenetreAjustementAuto
	
	#Image = 0
	#ImageAjuster
	
EndEnumeration

Procedure ReduireImage(Ecran_X, Ecran_Y)
	CopyImage(#Image, #ImageAjuster)
	If ImageHeight(#Image) > Ecran_Y Or ImageWidth(#Image) > Ecran_X
		If Ecran_X * ImageHeight(#Image) <= ImageWidth(#Image) * Ecran_Y
			ResizeImage(#ImageAjuster, Ecran_X, ImageHeight(#Image) * Ecran_X / ImageWidth(#Image), #PB_Image_Smooth)
		Else
			ResizeImage(#ImageAjuster, ImageWidth(#Image) * Ecran_Y / ImageHeight(#Image), Ecran_Y, #PB_Image_Smooth)
		EndIf
	EndIf
EndProcedure

Procedure ChangementDimension()
	Protected Ecran_Quantite, Fenetre.rect, Fenetre_Bordure_H, Fenetre_Bordure_L, Fenetre_Centre_X, Fenetre_Centre_Y, Fenetre_H, Fenetre_L
	
	; Dimension de la fenêtre
	GetWindowRect_(WindowID(0), Fenetre.rect)
	Fenetre_Centre_X = Fenetre\left + (Fenetre\right - Fenetre\left) / 2
	Fenetre_Centre_Y = Fenetre\top + (Fenetre\bottom - Fenetre\top) / 2
	Fenetre_H = WindowHeight(0) - MenuHeight() - StatusBarHeight(0)
	Fenetre_L = WindowWidth(0)
	Fenetre_Bordure_H = (Fenetre\bottom - Fenetre\top) - Fenetre_H
	Fenetre_Bordure_L = (Fenetre\right - Fenetre\left) - Fenetre_L
	
	; Position de la fenêtre
	Ecran_Quantite = ExamineDesktops()
	Ecran_Cible = 0
	For Ecran = 0 To Ecran_Quantite - 1
		If Fenetre_Centre_X >= DesktopX(Ecran) And Fenetre_Centre_X < DesktopX(0) + DesktopWidth(0) And Fenetre_Centre_Y >= DesktopY(Ecran) And Fenetre_Centre_Y < DesktopY(0) + DesktopHeight(0)
			Ecran_Cible = Ecran
		EndIf
	Next
	
	If IsImage(#Image)
		Image_H = ImageHeight(#Image)
		Image_L = ImageWidth(#Image)
		If Image_H < 40
			Image_H = 40
		EndIf
		If Image_L < 300
			Image_L= 300
		EndIf
	Else
		Image_H = 40
		Image_L = 300
	EndIf
	
	; Détermine si il faut maximiser la fenêtre
	If Image_L + 128 >= DesktopWidth(Ecran_Cible) - Fenetre_Bordure_L Or Image_H + 128 >= DesktopHeight(Ecran_Cible) - Fenetre_Bordure_H
		If GetWindowState(0) <> #PB_Window_Maximize
			SetWindowState(0, #PB_Window_Maximize)
			ChangementDimension()
			ProcedureReturn
		EndIf
	Else
		If GetWindowState(0) = #PB_Window_Maximize
			SetWindowState(0, #PB_Window_Normal)
			ChangementDimension()
			ProcedureReturn
		EndIf
	EndIf
	
	If GetWindowState(0) = #PB_Window_Normal
		x = WindowX(0) + (Fenetre_L - Image_L) / 2
		y = WindowY(0) + (Fenetre_H - Image_H) / 2
		If x < DesktopX(Ecran_Cible)
			x = DesktopX(Ecran_Cible)
		EndIf
		If y < DesktopY(Ecran_Cible)
			y = DesktopY(Ecran_Cible)
		EndIf
		ResizeWindow(0, x, y, Image_L, Image_H + MenuHeight() + StatusBarHeight(0))
	EndIf
	
EndProcedure

Procedure Dimension()
	Protected Fenetre_H, Fenetre_L
	
	; Dimension de la fenêtre
	Fenetre_H = WindowHeight(0) - MenuHeight() - StatusBarHeight(0)
	Fenetre_L = WindowWidth(0)
	
	If IsImage(#Image)
		ReduireImage(Fenetre_L, Fenetre_H)
		If IsGadget(#Image) = 0
			ImageGadget(#Image, (Fenetre_L - ImageWidth(#ImageAjuster)) / 2, (Fenetre_H - ImageHeight(#ImageAjuster)) / 2, ImageWidth(#ImageAjuster), ImageHeight(#ImageAjuster), ImageID(#ImageAjuster))
		Else
			ResizeGadget(#Image, (Fenetre_L - ImageWidth(#ImageAjuster)) / 2, (Fenetre_H - ImageHeight(#ImageAjuster)) / 2, ImageWidth(#ImageAjuster), ImageHeight(#ImageAjuster))
			SetGadgetState(#Image, ImageID(#ImageAjuster))
		EndIf
	EndIf
	
EndProcedure

Procedure Image_Fermer(OuvertureImage = 0)
	If IsImage(#Image)
		If IsGadget(#Image)
			FreeGadget(#Image)
		EndIf
		FreeImage(#Image)
		If IsImage(#ImageAjuster)
			FreeImage(#ImageAjuster)
		EndIf
	EndIf
	If OuvertureImage = 0
		ChangementDimension()
		Dimension()
		StatusBarText(0, 1, "", #PB_StatusBar_Center)
		StatusBarText(0, 0, "")
	EndIf
EndProcedure
Procedure Image_Ouvrir()
	Protected Image.i, Image_Fichier.s
	Image_Fichier = OpenFileRequester("Image", "", "Image BMP, JPG, PNG|*.bmp;*.jpg;*.png|Tous les fichiers|*.*", 0)
	If Image_Fichier
		If FileSize(Image_Fichier) >= 0
			Image = LoadImage(#PB_Any, Image_Fichier)
			If Image
				Image_Fermer(1)
				CopyImage(Image, #Image)
				FreeImage(Image)
				ChangementDimension()
				Dimension()
				StatusBarText(0, 1, Str(ImageWidth(#Image)) + " x " + Str(ImageWidth(#Image)), #PB_StatusBar_Center)
				StatusBarText(0, 0, GetFilePart(Image_Fichier))
			Else
				MessageRequester("Image", "Le format du fichier n'est pas reconnu")
			EndIf
		Else
			MessageRequester("Image", "Le fichier est introuvable")
		EndIf
	EndIf
EndProcedure

If OpenWindow(0, 0, 0, 300, 40, "Ouvrir une image", #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_SystemMenu) = 0
	End
EndIf

If CreateMenu(0, WindowID(0))
	MenuTitle("Programme")
	MenuItem(#Quitter, "Quitter")
	MenuTitle("Image")
	MenuItem(#Ouvrir, "Ouvrir")
	MenuItem(#Fermer, "Fermer")
	MenuTitle("Fenêtre")
	MenuItem(#FenetreAjustementAuto, "Ajustement automatique de la fenêtre à l'image")
Else
	End
EndIf

If CreateStatusBar(0, WindowID(0))
	AddStatusBarField(#PB_Ignore)
	AddStatusBarField(160)
Else
	End
EndIf

WindowBounds(0, 300, 40 + MenuHeight() + StatusBarHeight(0), #PB_Ignore, #PB_Ignore)
ChangementDimension()
Dimension()

Repeat
	Event = WaitWindowEvent()
	Select Event
		Case #PB_Event_SizeWindow
			Dimension()
		Case #PB_Event_Menu
			Select EventMenu()
				Case #Ouvrir
					Image_Ouvrir()
				Case #Fermer
					Image_Fermer()
			EndSelect
	EndSelect
Until Event = #PB_Event_CloseWindow

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Le Soldat Inconnu »

Sinon, j'ai retesté. Et toujours pas, l'image est mal ajustée
avec une image carré plus grande que l'écran, elle est réduite à 2/3 de la hauteur de l'écran en gros
avec une image de la taille de l'écran, ça recouvre la barre des tâches et je ne vois plus la StatusBar()
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Ar-S »

le truc de fou c'est que chez moi ça fonctionne dans TOUS les cas !
- 1 Image plus large et moins haute que l'ecran
- 1 Image plus haute et moins large que l'ecran
- 1 Image plus large et plus haute que l'ecran
- 1 image moins haute et moins large que l'ecran
Tu veux jeter un oeil au code (via MP)? j'aimerai trouver d'ou vient ce bug dans mon code. surtout que je n'arrive pas à le reproduire.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Crop Crop ! Pour recadrer vos photos !

Message par Backup »

Le Soldat Inconnu a écrit :Sinon, j'ai retesté. Et toujours pas, l'image est mal ajustée
avec une image carré plus grande que l'écran, elle est réduite à 2/3 de la hauteur de l'écran en gros
avec une image de la taille de l'écran, ça recouvre la barre des tâches et je ne vois plus la StatusBar()

sur Seven , il y a une option a virer ... celle qui remet les fenetres au centre de l'ecran , si on cherche a la faire dépasser sur le haut de l'ecran ..etc ..
je sais plus ou c'est ... mais le probleme viens peut etre de là ... ?

[Reedit]

voir ici :
http://www.windows-seven.org/2009/04/wi ... ement.html
Panneau de configuration > Options d’ergonomie > Rendre la souris plus facile à utiliser > Empêcher les fenêtres d’être automatiquement réorganisées lorsqu’elles sont déplacées au bord de l’écran.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Ar-S »

@dobro, cette option est activée (et très pratique) chez moi et j'ai pas de problème.

Ci joint une archive avec mes 4 images tests : (je suis en 1680x1050)
http://stock.ldvmultimedia.com/testpics.zip
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Crop Crop ! Pour recadrer vos photos !

Message par Ar-S »

Mise à jour.
Remplacement des Buttongadget par des Canvas pour une meilleur lisibilité.
(c'est vrai que la canvas c'est de la bombe).

(P.S : G-rom pas d'allusion salace sur la nénette tu seras brave :mrgreen: , c'est ma frangine :twisted: )
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Crop Crop 1.02 ! Pour recadrer vos photos !

Message par Le Soldat Inconnu »

envoi ton code, je veux bien regarder (mais peut-être que lundi)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Crop Crop 1.02 ! Pour recadrer vos photos !

Message par Le Soldat Inconnu »

ça me fais ça : (une image de la même taille que l'écran, l'autre plus grande)
Image
Image
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Crop Crop 1.02 ! Pour recadrer vos photos !

Message par Ar-S »

Peux tu m'envoyer l'image de la fifille que je teste.

Je testerai dans l'aprem, je pars chez une cliente.
Dernière modification par Ar-S le ven. 05/oct./2012 17:25, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Crop Crop 1.02 ! Pour recadrer vos photos !

Message par Ar-S »

Bon j'ai essayé ton image
ça passe nikel, je ne comprends pourquoi chez toi ça pine.

Image
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Crop Crop 1.02 ! Pour recadrer vos photos !

Message par Backup »

Ar-S a écrit :Bon j'ai essayé ton image
ça passe nikel, je ne comprends pourquoi chez toi ça pine.

il a un ordi chinois :mrgreen:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Crop Crop 1.02 ! Pour recadrer vos photos !

Message par Le Soldat Inconnu »

Parce que le tiens n'est pas fabriqué en chine ? t'en as un œil :mrgreen:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre