Redimensionnement en utilisant le rééchantillonnage bicubique [Résolu]

Signaler
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
-
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
-
Bonjour,
J'ai utilisé le redimensionnement d'images par défaut de l'API Win32 mais il déforme beaucoup les images. En utilisant Photoshop CS5 on arrive à un très bon résultat. Apparemment ils utilisent le rééchantillonage bicubique. Je voulais savoir si un tel code avait déjà été écrit pour Delphi et était libre de droit. J'ai cherché sur le site mais y est vu un rééchantillonnage bilinéaire je ne sais pas la différence et lequel est le plus efficace.
Merci d'aavance de votre aide.
Cordialement.

SISI231

10 réponses

Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Tu peux utiliser windows GDI.
Tu as un exemple d' utilisation dans mon compo TcyBook ici:
Composants Cindy pour Delphi
Faites une donation.
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
Et le GDI utilise le rééchantillonnage bicubique, désolé d'insister mais je veux être sûr ?


SISI231
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
Je viens de vérifier ce que tu appelle le GDI est ce que j'appelle l'API Win32 donc ça n'utilise pas le rééchantillonage bicubique.

SISI231
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
bonjour,

Comment ça ?
MAURICIO ne ferait pas dans le bicubique ?

cantador
Messages postés
3811
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
15 juin 2020
30
Salut,

peux tu nous montrer ce que tu as essayé ... avec quelle API et comment ?

j'ai trouvé un code en C (de Paul Bourke) que j'ai traduit en Pascal et les testes montrent que l'API est plus performante, autant en temps qu'en qualité, que la méthode Bicubique !!!

Dans certain cas, rares, la méthode Bicubique donne un meilleur résultat visuel ... mais le temps d'exécution est très long.

voici les infos que j'ai utilisé:
Various Simple Image Processing Techniques
Written by Paul Bourke


Et la lib en C dans laquelle on trouve la procédure "BiCubicScale"


[hr]@+Cirec
[hr]
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
J'utilise stretchdraw de TBitmap

SISI231
Messages postés
3811
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
15 juin 2020
30
@Sisi231:

ce serait sympa que tu donnes ton avis sur le code avant de poser une nouvelle question !!!

à la base il a été traduit pour toi et d'autre membre (Barbichette & Pseudo3) se sont donné du mal pour en accélérer l'exécution et plus encore

c'est ce genre de comportement qui nous incite à nous abstenir de répondre ... tant que la réponse n'est pas donnée vous êtes la pour dire "ça marche pas, non c'est pas ça etc etc"

et dès que la réponse est donnée .. pouf plus personne

[hr]@+Cirec
[hr]
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
Bonjour,
Veuille-bien m'excuser, désolé, je viens de tester et en effet la méthode avec GDI est mieux. La seule différence avec mon code est ce HALF_TONE, peux-tu préciser s'il-te-plaît à quoi il sert ?
Merci encore.


SISI231
Messages postés
3811
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
15 juin 2020
30
Merci d'avoir répondu aussi rapidement

le HALFTONE augmente de façon significative la qualité du rendu final ... il te suffit de désactiver cette portion de code:
 if GetStretchBltMode(imgResized.Picture.Bitmap.Canvas.Handle) <> HalfTone then
begin
GetBrushOrgEx(imgResized.Picture.Bitmap.Canvas.Handle, pt);
SetStretchBltMode(imgResized.Picture.Bitmap.Canvas.Handle, HalfTone); { }
SetBrushOrgEx(imgResized.Picture.Bitmap.Canvas.Handle, pt.x, pt.y, @pt);
end;

et de faire quelques essais de redimensionnements (différentes tailles) pour te rendre compte qu'a certain moment le résultat est exécrable (pas à toutes les tailles hein) ... avec le HALFTONE ces défauts sont corrigés automatiquement.
voilà j'espère avoir répondu à ta question


[hr]@+Cirec
[hr]
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
OK avec cette réponse, le problème est complètement réglé, le problème était que je comparais le GDI avec le strech sans halftone avec le bicubic alors que toi tu comparais le gdi avec halftone avec le bicubic d'où le quiproquo

SISI231