L'enregistrement en jpeg à partir de memorystream en c#
J'ai une méthode comme indiqué ci-dessous pour enregistrer l'image comme jpeg.
Je veux enregistrer toutes les images avec la même hauteur et la largeur, sans qu'il se déforme.
Comment puis-je le faire?
S'il vous plaît aider
public void SaveFileOnDisk(MemoryStream ms, string FileName)
{
try
{
string appPath = HttpContext.Current.Request.ApplicationPath;
string physicalPath = HttpContext.Current.Request.MapPath(appPath);
string strpath = physicalPath + "\\Images";
string WorkingDirectory = strpath;
System.Drawing.Image imgSave = System.Drawing.Image.FromStream(ms);
Bitmap bmSave = new Bitmap(imgSave);
Bitmap bmTemp = new Bitmap(bmSave);
Graphics grSave = Graphics.FromImage(bmTemp);
grSave.DrawImage(imgSave, 0, 0, imgSave.Width, imgSave.Height);
bmTemp.Save(WorkingDirectory + "\\" + FileName + ".jpg");
imgSave.Dispose();
bmSave.Dispose();
bmTemp.Dispose();
grSave.Dispose();
}
catch (Exception ex)
{
//lblMsg.Text = "Please try again later.";
}
}
Pouvez-vous expliquer ce que tu veux dire "à la même hauteur et la largeur sans faire faussée"? Si les photographies originales ont un ratio d'aspect différent (c'est à dire, la ration de largeur-hauteur) de votre sortie dimensions, vous ont distorsion. Vos seules options pour éviter la distorsion sont (1) des bandes noires avec une bordure sur un seul côté ou de l'autre ou (2) avoir votre destination taille être un "fixe" de dimension et d'une dimension qui change en fonction de la photo d'origine de l'aspect ratio.
Ce n'est pas vraiment possible maintenant, est-il? Si vous obtenez un 400 x 300 image et une autre qui est de 400 x 100 vous ne pouvez pas enregistrer avec la même taille sans distorsion quelque chose. Vous pourriez letterbox ceux qui ne s'adaptent pas, utiliser des Graphiques.DrawImage().
pourquoi ne pas accepter une réponse
Ce n'est pas vraiment possible maintenant, est-il? Si vous obtenez un 400 x 300 image et une autre qui est de 400 x 100 vous ne pouvez pas enregistrer avec la même taille sans distorsion quelque chose. Vous pourriez letterbox ceux qui ne s'adaptent pas, utiliser des Graphiques.DrawImage().
pourquoi ne pas accepter une réponse
OriginalL'auteur acadia | 2012-05-19
Vous devez vous connecter pour publier un commentaire.
Redimensionner l'Image et de l'Enregistrer
Vous pouvez utiliser ce code pour Redimensionner l'image à la Dimension Avant de l'enregistrer
OriginalL'auteur techno
Comme d'autres l'ont mentionné, si vous voulez toutes les images à la même taille, sans distorsion, vous allez avoir besoin de redimensionner tout en maintenant le ratio d'aspect. Voir cette fonction ci-dessous:
Maintenant votre utilisation de la fonction peut être considérablement simplifiée (en supposant 1024x768 cible images ici):
Note l'ajout de simplification en termes de nombre de variables, et l'élimination en utilisant
using
au lieu deDispose()
.OriginalL'auteur yamen