Syphou
Messages postés52Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention 6 juin 2011
-
10 mai 2007 à 17:52
Syphou
Messages postés52Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention 6 juin 2011
-
11 mai 2007 à 09:24
Bonjour;
Jai une fonction qui va chercher 28 000 images d'articles sur le net. Je doit les enregistrer sur un serveur, elles doivent etre carrée et etre < a 20ko
Donc je dois pour chaque image les redimensionner. Vu quelles doivent etre carrée, je prend la plus grande des deux taille (longeur ou largeur) et j'adapte lautre. Jai ainsi mon objet bitmap dans lequel je dessine limage dorigine.
La fonction ci dessou fonction tes bien, elle redismensionne limage proportionelement, la met au centre de mon bitmap carré et enregistre.
MAIS la taille (en octet) est trop grande. Jai vu qu'on pouvai faire mon_bitmap.SetResolution(72, 72)
mais sa décale toute mon image et la taille nest pas plus petite :(
Jai mis toutes les options de mon objet graphique au minimum (low, none, ...) mais cest encore trop lourd.
Pour des images de 200X200 j'atteint les 50ko, beaucoup trop !!!
Quelqu'un sait ?, cest des images d'article, la qualite ne doit pas etre top
(remarque : je fait deux foi la meme chose ci dessou pour etre sur que mon image est bien carrée et quelle rentre dans le carré imposé)
bm cest mon bitmap qui contient mon image d'origine
'L'image doit être carrée, donc si L > H, image = L * L sinon H * H
If bm.Height > bm.Width
Thenresized =
New Bitmap(bm.Height, bm.Height)
Else
If bm.Height < bm.Width
Thenresized =
New Bitmap(bm.Width, bm.Width)
Elseresized =
New Bitmap(bm.Width, bm.Height)
End
If
End
If
'trouver la plus grande des deux dimensions de limage dorigine
Dim HauteurOrigine
As
Integer = bm.Height
Dim LargeurOrigine
As
Integer = bm.Width
Dim HauteurNew
As
Integer
Dim LargeurNew
As
Integer
Dim HauteurImposee
As
Integer = resized.Height
Dim LargeurImposee
As
Integer = resized.Width
Dim bitmapTMP
As Bitmap
Dim bitmapTMP2
As Bitmap
'Redimensionne dans un sens (simple regle de 3)
If LargeurOrigine > HauteurOrigine
ThenLargeurNew = LargeurImposee
New System.Drawing.Rectangle(0, 0, bitmapTMP.Width, bitmapTMP.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)graph.Dispose()
'Redimensionne dans lautre sens pour etre sur que sa rentre dans le carre, ainsi ma plus grande des deux taille sera la largeur(ou hauteur, cest pareil) du carré imposéLargeurOrigine = bitmapTMP.Width
HauteurOrigine = bitmapTMP.Height
If LargeurOrigine > HauteurOrigine
ThenLargeurNew = LargeurImposee
Syphou
Messages postés52Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention 6 juin 2011 11 mai 2007 à 09:24
Ton idee ma fait penser que j'ai vu sur le net que dans le bitmap.save("nom_image.jpg") on sait mettre le format de l'image : birmap.save("nom_image.jpg",System.Drawing.Imaging.ImageFormat.Jpeg)
et cela fonctionne ! mes images font entre 3 et 7ko
Donc en fait le fait de faire bitmap.save("mon_image.jpg") ne suffit pas aparrement cest une image bmp avec l'extension jpg. Donc il faut bien stipuler le format au moment de la sauvegarde.
IslandMan974
Messages postés104Date d'inscriptionmercredi 4 mai 2005StatutMembreDernière intervention27 juin 20073 10 mai 2007 à 23:07
si je dit pas de betises ,la taille en KB des images dependent de leur format .Ainsi une meme image en .bmp, .gif ,et .jpeg n' aura pas le meme taille .Essaye de voir qu'elle extension est la mieux mais je crois que c gif