PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Le redimensionnement ne tient pas compte de la couleur de fond de l'image (Android mode réel)
Le redimensionnement ne tient pas compte de la couleur de fond de l'image (Android mode réel)
Débuté par Baptiste, 06 fév. 2020 18:31 - 9 réponses
Posté le 06 février 2020 - 18:31
Bonjour,
Je rencontre un nouveau problème totalement bloquant
En effet, j’ai besoin de redimensionner une image en mode drHomothétiqueCentré prise à partir de mon périphérique android

J’indique à mon programme que je désire que le fond de l’image destination soit blanc
Pourtant, le redimensionnement ne tient pas compte de ce paramètre et les bandes de redimensionnement sont noire au lieu d’être blanche

Cela fait plusieurs heures que je bloque sur ce problème, avez-vous une solution svp ?

sPhoto est une chaîne
sPhoto = PhotoLanceAppli()

MyImage est une Image
MyImage..CouleurRemplissage..Couleur=Blanc
MyImage =sPhoto

dDébutDessin(MyImage) // n'a aucune incidence ...
MyImage..CouleurRemplissage..Couleur=Blanc
SI dRedimensionne(MyImage,500,500,drHomothétiqueCentré) = Faux ALORS // drHauteQualité
Trace("Impossible de redimensionner")
FIN
dFinDessin(MyImage) // n'a aucune incidence ...


fMakeDir(SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet))
fDelete(SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet)+"\img.jpg")

IF dSauveImageJPEG(MyImage,SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet)+"\img.jpg")=False THEN
Info(ErreurInfo())
ELSE
Info("Fichier sauvegardé dans "+SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet)) // Ce PC\Galaxy Tab S2\Tablet\fondBlanc

END
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 06 février 2020 - 23:33
Si tu passe par un champ image paramétré en homothétique centré et fond blanc
Cela t'évitera une bonne partie du code.
Posté le 07 février 2020 - 08:05
Le problème, c'est que j'ai besoin de stocker l'image sur le disque avec les dimensions désirées

Hors, dans le code suivant, si mon composant IMG_SansNom1=256*256, j'obtiens une image sauvegardée de 1024*1024

sPhoto est une chaîne
sPhoto = PhotoLanceAppli()
IMG_SansNom1=sPhoto

fMakeDir(SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet))
fDelete(SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet)+"\img.jpg")

IF dSauveImageJPEG(IMG_SansNom1,SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet)+"\img.jpg")=False THEN
Info(ErreurInfo())
ELSE
Info("Fichier sauvegardé dans "+SysRepCarteStockage() + [fSep] + ProjetInfo(piNomProjet)) // Ce PC\Galaxy Tab S2\Tablet\fondBlanc

END
Posté le 07 février 2020 - 08:32
Voila comment je procède :

1. je place un champ image déclaré en 100% hors écran
2. je récupère les dimensions de l'image d'origine par code, et je redimensionne mon champ image à ces valeurs AVANT de charger mon image dans le champs
3. je charge l'image dans le champs
4. je redimensionne le champ à la taille désirée
5. je sauve le contenu du champ avec dsauveimage

Utilisé en windev, webdev, et mobile
Posté le 07 février 2020 - 17:47
Mon but et de diminuer la taille de l image (photo prise par l utilisateur)

De plus mon image doit toujours être de la même taille 500x500

J utilise donc le mode homothéties centre sans agrandissement , ce qui a pour conséquence de rajouter 2 bandes. De plus ces bandes doivent être blanches , donc je définie le fond de mon image à blanc

Et c est la ou ça se complique sur Android

En effet, si j associe mon image à un champ image utilisant ce mode l aperçu sera ok
Mais si je sauve l image avec sauveimage elle ne fera pas 500x500, la taille de mon champ n est pas respecté

Si j essaye de la redimensionner par programmation , alors elle perds les caractéristiques blanche du fond (celui ci devient noire)
Je pense que c est un bug windev Mobile sous Android

Bref avez vous un exemple de votre code, car j ai passé 2 jours sur ce problème et je ne m en sors pas
Posté le 07 février 2020 - 18:09
Dans votre code vous utilisez 100 pour cent
Hors moi j ai besoin de redimensionner l image en homothétique centre sans agrandissement
Hors à partir du moment où je redimensionne l image les bandes passent en noire au lieu de rester blanche sur Android
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 08 février 2020 - 11:28
Il y a sûrement une erreur entre blanc et noir de la part de pcsoft
Utilise la fonction rvb si tu utilise la variable image.
La fonction dRedimensionne peut être utilisée avec un champ image.
Si tu utilise un champ image à la place de la variable.
L'image finale contiendra la couleur de fond.
C'est pour cela que je t'ai conseillé le champ mais il faut quand même utiliser dRedimensionne
Posté le 08 février 2020 - 17:32
Merci

Mais j'ai testé les 2 méthodes (avec champ image et avec dRedimensionne)
Je confirme qu'il y a un bug et que sous Andoid, le fond passe systématiquement en noir des qu'on essaye de redimensionner une photo
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 10 février 2020 - 10:17
Et avec Rvb ?
MyImage..CouleurRemplissage..Couleur=rvb(255,255,255)
Message modifié, 10 février 2020 - 10:19
Posté le 10 février 2020 - 14:55
Problème identique :)
A partir du moment ou on utilise la moindre fonction de redimensionnement, ou qu'on modifie les propriétées ..largeur ..hauteur le fond passe en noire