Redimensionnement en utilisant le rééchantillonnage bicubique

Résolu
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 - 29 juil. 2012 à 22:57
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre 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

10 réponses

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


SISI231
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
30 juil. 2012 à 12:12
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
31 juil. 2012 à 11:30
bonjour,

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

cantador
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
3 août 2012 à 13:34
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]
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
3 août 2012 à 19:03
J'utilise stretchdraw de TBitmap

SISI231
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 août 2012 à 13:57
@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]
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
18 août 2012 à 14:11
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 août 2012 à 15:09
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]
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
18 août 2012 à 15:13
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
0
Rejoignez-nous