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

Messages postés
210
Date d'inscription
mercredi 5 mars 2003
Dernière intervention
29 mars 2013
- - Dernière réponse : sisi231
Messages postés
210
Date d'inscription
mercredi 5 mars 2003
Dernière intervention
29 mars 2013
- 18 août 2012 à 15:13
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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
pour tous ceux qui voudrait voir ce que ça donne j'ai mis en ligne mon projet de teste

à vous de juger


[hr]@+Cirec
[hr]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

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


SISI231
Commenter la réponse de sisi231
Messages postés
210
Date d'inscription
mercredi 5 mars 2003
Dernière intervention
29 mars 2013
0
Merci
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
Commenter la réponse de sisi231
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
bonjour,

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

cantador
Commenter la réponse de cs_cantador
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
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]
Commenter la réponse de Cirec
Messages postés
210
Date d'inscription
mercredi 5 mars 2003
Dernière intervention
29 mars 2013
0
Merci
J'utilise stretchdraw de TBitmap

SISI231
Commenter la réponse de sisi231
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
@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]
Commenter la réponse de Cirec
Messages postés
210
Date d'inscription
mercredi 5 mars 2003
Dernière intervention
29 mars 2013
0
Merci
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
Commenter la réponse de sisi231
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
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]
Commenter la réponse de Cirec
Messages postés
210
Date d'inscription
mercredi 5 mars 2003
Dernière intervention
29 mars 2013
0
Merci
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
Commenter la réponse de sisi231

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.