2010-01-06 4 views
0

J'ai un fichier image qui est de (taille 600 * 800) ou n'importe quelle taille. maintenant j'ai besoin de les convertir en une taille d'image thubnail qui est de taille **** (110 * 110) ****comment redimensionner une image tout en enregistrant dans un dossier

mais si je réduis la taille d'une image je ne devrais pas changer la qualité de l'image. comme une fois que nous réduisons la taille de l'image, la qualité de l'image a disparu

est-il un moyen sans affecter la qualité de l'image que nous pouvons les convertir en une image miniature [y at-il une classe intégrée pour cela dans .net)

toute aide serait grande

Répondre

0

lorsque vous réduire la taille d'une image que vous ne réduisez pas sa qualité, que lorsque vous essayez de le ramener à sa taille originale de la version réduite de la qualité sera affectée.

3

Eh bien, sur la façon de le faire, il y a un matériau intéressant here le mai vous aider. A propos de la perte de qualité, si vous voulez dire la résolution, il n'y a pas moyen de réduire la taille d'une image, vous jetez des informations spatiales qui ne peuvent plus être reconstruites. Bien sûr, si vous utilisez une sorte d'interpolation, mais ce ne sera jamais la même que votre image originale.

Ce que vous pouvez faire est de stocker une version de chacun.

Voici le code obtenu à partir du lien et honnêtement, je pense que les 5 dernières lignes de code commençant à Bitmap b = new Bitmap (destWidth, destHeight); est suffisant pour résoudre votre problème.

private static Image resizeImage(Image imgToResize, Size size) 
{ 
    int sourceWidth = imgToResize.Width; 
    int sourceHeight = imgToResize.Height; 

    float nPercent = 0; 
    float nPercentW = 0; 
    float nPercentH = 0; 

    nPercentW = ((float)size.Width/(float)sourceWidth); 
    nPercentH = ((float)size.Height/(float)sourceHeight); 

    if (nPercentH < nPercentW) 
     nPercent = nPercentH; 
    else 
     nPercent = nPercentW; 

    int destWidth = (int)(sourceWidth * nPercent); 
    int destHeight = (int)(sourceHeight * nPercent); 

    Bitmap b = new Bitmap(destWidth, destHeight); 
    Graphics g = Graphics.FromImage((Image)b); 
    g.InterpolationMode = InterpolationMode.HighQualityBicubic; 

    g.DrawImage(imgToResize, 0, 0, destWidth, destHeight); 
    g.Dispose(); 

    return (Image)b; 
} 
Questions connexes