Je construis un album photo pour mon portfolio de photographies. Mais je me questionne sur ce qui suit:Miniatures et album photo
Dois-je sauvegarder la version miniature sur le système de fichiers sur le serveur, ou dois-je générer dynamiquement la vignette lorsque l'image miniature est demandée?
Je suppose que les avantages pour stocker la vignette, est moins de traitement sur le serveur, car il a généré le fichier une fois (lorsque le fichier est téléchargé). Mais le contre serait que si je décide un jour que les vignettes sont de la mauvaise taille, j'ai un problème. Aussi, je stocke 2 fichiers maintenant (Thumb plus original).
Ensuite, y a-t-il une taille optimale pour les vignettes? Je suppose que la réponse est - quelle taille voulez-vous les vignettes stockées. Mon problème est que mes onglets sont en train d'être redimensionnés à 150 ou 150 maximum. Cependant, les fichiers atteignent environ 40 Ko.
J'utilise ceci:
public void ResizeImage(string originalFile, string newFile, int newWidth, int maxHeight, bool onlyResizeIfWider)
{
System.Drawing.Image fullsizeImage = System.Drawing.Image.FromFile(MapPath(GlobalVariables.UploadPath + "/" + originalFile));
// Prevent using images internal thumbnail
fullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
fullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
if (onlyResizeIfWider)
{
if (fullsizeImage.Width <= newWidth)
{
newWidth = fullsizeImage.Width;
}
}
int newHeight = fullsizeImage.Height * newWidth/fullsizeImage.Width;
if (newHeight > maxHeight)
{
// Resize with height instead
newWidth = fullsizeImage.Width * maxHeight/fullsizeImage.Height;
newHeight = maxHeight;
}
System.Drawing.Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
// Clear handle to original file so that we can overwrite it if necessary
fullsizeImage.Dispose();
// Save resized picture
newImage.Save(MapPath(GlobalVariables.UploadPath + "/" + newFile));
}
Y at-il un moyen de réduire la taille du fichier, comme 150 haute/150 de large est assez petite. Je voudrais aller jusqu'à environ 250, mais si je montre 12 pouces ... il faut un certain temps pour charger.
Merci pour les blocs info. Très utile. Avec la qualité, j'utilise System.Drawing.Image - et ce type d'objet n'a pas les propriétés mentionnées. Devrais-je utiliser Bitmap à la place, puis enregistrez-vous toujours en tant que Jpeg, une fois en utilisant les propriétés mentionnées ci-dessus? – Craig
@cdotlister oui utilisez mieux une procédure de vignette plus détaillée que vous pouvez contrôler plus pense. – Aristos
Merci - Je ne sais pas comment utiliser ces propriétés sur mon Bitmap ... BitmapObject.InterpolationMode ne fonctionnera pas. – Craig