Voglio visualizzare l'immagine di anteprima in una vista della griglia dal percorso del file. Come si genera quello del file .jpeg
? Sto usando la lingua C#
con asp.net
.Crea immagine anteprima
risposta
si deve utilizzare GetThumbnailImage
metodo nella classe Image
:
https://msdn.microsoft.com/en-us/library/8t23aykb%28v=vs.110%29.aspx
Ecco un esempio di massima che prende un file di immagine e fa una miniatura da esso, quindi lo salva su disco.
Image image = Image.FromFile(fileName);
Image thumb = image.GetThumbnailImage(120, 120,()=>false, IntPtr.Zero);
thumb.Save(Path.ChangeExtension(fileName, "thumb"));
@ktsixit - È nello spazio dei nomi System.Drawing (in System.Drawing.dll) –
Sei serio? GetThumbnailImage produce risultati orribili su immagini che hanno già incorporato le anteprime. [Non fare questi errori] (http://nathanaeljones.com/163/20-image-resizing-pitfalls/), per favore. http://imageresizing.net è open-source, gratuito, veloce e ti darà risultati di alta qualità. –
Può essere utilizzato solo su immagini JPG in genere. Se provi a ridimensionare un'immagine PNG come questa, otterrai questo errore. – HBlackorby
Il seguente codice scriverà un'immagine proporzionale alla risposta, è possibile modificare il codice per il vostro scopo:
public void WriteImage(string path, int width, int height)
{
Bitmap srcBmp = new Bitmap(path);
float ratio = srcBmp.Width/srcBmp.Height;
SizeF newSize = new SizeF(width, height * ratio);
Bitmap target = new Bitmap((int) newSize.Width,(int) newSize.Height);
HttpContext.Response.Clear();
HttpContext.Response.ContentType = "image/jpeg";
using (Graphics graphics = Graphics.FromImage(target))
{
graphics.CompositingQuality = CompositingQuality.HighSpeed;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.DrawImage(srcBmp, 0, 0, newSize.Width, newSize.Height);
using (MemoryStream memoryStream = new MemoryStream())
{
target.Save(memoryStream, ImageFormat.Jpeg);
memoryStream.WriteTo(HttpContext.Response.OutputStream);
}
}
Response.End();
}
Ho fornito il percorso del file locale nel percorso della stringa. restituisce "il formato del percorso dato non è supportato". –
ho dato così ... var path = @ "C: \ Users \ Gopal \ Desktop \ files.jpeg"; Bitmap srcBmp = new Bitmap (percorso); –
Ecco un esempio completo di come creare un'immagine più piccola (miniatura). Questo snippet ridimensiona l'immagine, la ruota quando necessario (se il telefono è tenuto in verticale) e riempie l'immagine se vuoi creare i pollici quadrati. Questo frammento crea un JPEG, ma può essere facilmente modificato per altri tipi di file. Anche se l'immagine fosse più piccola della dimensione massima consentita, l'immagine verrà comunque compressa e la sua risoluzione verrà alterata per creare immagini con lo stesso dpi e livello di compressione.
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
//set the resolution, 72 is usually good enough for displaying images on monitors
float imageResolution = 72;
//set the compression level. higher compression = better quality = bigger images
long compressionLevel = 80L;
public Image resizeImage(Image image, int maxWidth, int maxHeight, bool padImage)
{
int newWidth;
int newHeight;
//first we check if the image needs rotating (eg phone held vertical when taking a picture for example)
foreach (var prop in image.PropertyItems)
{
if (prop.Id == 0x0112)
{
int orientationValue = image.GetPropertyItem(prop.Id).Value[0];
RotateFlipType rotateFlipType = getRotateFlipType(orientationValue);
image.RotateFlip(rotateFlipType);
break;
}
}
//apply the padding to make a square image
if (padImage == true)
{
image = applyPaddingToImage(image, Color.Red);
}
//check if the with or height of the image exceeds the maximum specified, if so calculate the new dimensions
if (image.Width > maxWidth || image.Height > maxHeight)
{
double ratioX = (double)maxWidth/image.Width;
double ratioY = (double)maxHeight/image.Height;
double ratio = Math.Min(ratioX, ratioY);
newWidth = (int)(image.Width * ratio);
newHeight = (int)(image.Height * ratio);
}
else
{
newWidth = image.Width;
newHeight = image.Height;
}
//start the resize with a new image
Bitmap newImage = new Bitmap(newWidth, newHeight);
//set the new resolution
newImage.SetResolution(imageResolution, imageResolution);
//start the resizing
using (var graphics = Graphics.FromImage(newImage))
{
//set some encoding specs
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.DrawImage(image, 0, 0, newWidth, newHeight);
}
//save the image to a memorystream to apply the compression level
using (MemoryStream ms = new MemoryStream())
{
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, compressionLevel);
newImage.Save(ms, getEncoderInfo("image/jpeg"), encoderParameters);
//save the image as byte array here if you want the return type to be a Byte Array instead of Image
//byte[] imageAsByteArray = ms.ToArray();
}
//return the image
return newImage;
}
//=== image padding
public Image applyPaddingToImage(Image image, Color backColor)
{
//get the maximum size of the image dimensions
int maxSize = Math.Max(image.Height, image.Width);
Size squareSize = new Size(maxSize, maxSize);
//create a new square image
Bitmap squareImage = new Bitmap(squareSize.Width, squareSize.Height);
using (Graphics graphics = Graphics.FromImage(squareImage))
{
//fill the new square with a color
graphics.FillRectangle(new SolidBrush(backColor), 0, 0, squareSize.Width, squareSize.Height);
//put the original image on top of the new square
graphics.DrawImage(image, (squareSize.Width/2) - (image.Width/2), (squareSize.Height/2) - (image.Height/2), image.Width, image.Height);
}
//return the image
return squareImage;
}
//=== get encoder info
private ImageCodecInfo getEncoderInfo(string mimeType)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
for (int j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType.ToLower() == mimeType.ToLower())
{
return encoders[j];
}
}
return null;
}
//=== determine image rotation
private RotateFlipType getRotateFlipType(int rotateValue)
{
RotateFlipType flipType = RotateFlipType.RotateNoneFlipNone;
switch (rotateValue)
{
case 1:
flipType = RotateFlipType.RotateNoneFlipNone;
break;
case 2:
flipType = RotateFlipType.RotateNoneFlipX;
break;
case 3:
flipType = RotateFlipType.Rotate180FlipNone;
break;
case 4:
flipType = RotateFlipType.Rotate180FlipX;
break;
case 5:
flipType = RotateFlipType.Rotate90FlipX;
break;
case 6:
flipType = RotateFlipType.Rotate90FlipNone;
break;
case 7:
flipType = RotateFlipType.Rotate270FlipX;
break;
case 8:
flipType = RotateFlipType.Rotate270FlipNone;
break;
default:
flipType = RotateFlipType.RotateNoneFlipNone;
break;
}
return flipType;
}
//== convert image to base64
public string convertImageToBase64(Image image)
{
using (MemoryStream ms = new MemoryStream())
{
//convert the image to byte array
image.Save(ms, ImageFormat.Jpeg);
byte[] bin = ms.ToArray();
//convert byte array to base64 string
return Convert.ToBase64String(bin);
}
}
Per gli utenti asp.net un piccolo esempio di come caricare un file, ridimensionarla e visualizzare il risultato nella pagina.
//== the button click method
protected void Button1_Click(object sender, EventArgs e)
{
//check if there is an actual file being uploaded
if (FileUpload1.HasFile == false)
{
return;
}
using (Bitmap bitmap = new Bitmap(FileUpload1.PostedFile.InputStream))
{
try
{
//start the resize
Image image = resizeImage(bitmap, 256, 256, true);
//to visualize the result, display as base64 image
Label1.Text = "<img src=\"data:image/jpg;base64," + convertImageToBase64(image) + "\">";
//save your image to file sytem, database etc here
}
catch (Exception ex)
{
Label1.Text = "Oops! There was an error when resizing the Image.<br>Error: " + ex.Message;
}
}
}
- 1. PDF Anteprima anteprima immagine in laravel 5.1?
- 2. Anteprima immagine con jQuery
- 3. Unfailing Javascript Immagine anteprima
- 4. PHP - crea l'immagine di anteprima dall'URL
- 5. C# Crea immagine sfumatura
- 6. Anteprima immagine senza Upload sul mio server
- 7. Sublime Text 2 plug in anteprima immagine
- 8. Get URL da anteprima immagine URL
- 9. Scarica immagine e crea bitmap
- 10. Crea immagine ISO dalla cartella
- 11. Crea immagine da dati RGB?
- 12. CGImage crea un'immagine di anteprima con la dimensione desiderata
- 13. Crea VM dal VHD esistente: portale di anteprima
- 14. Crea anteprima dal vivo dell'immagine (prima di caricarla) usando JQuery
- 15. Android: come salvare una cornice di anteprima come immagine jpeg?
- 16. Docker - Crea immagine rpi su Mac
- 17. Android Crea immagine "Ghost" (Touch-through)
- 18. Crea immagine da vista/schermo in Android
- 19. Crea immagine da file .dot in C#
- 20. Crea miniatura e riduci dimensione immagine
- 21. Docker: crea il tuo problema di immagine
- 22. JavaFX - crea pulsante personalizzato con immagine
- 23. Crea immagine PNG con C# HttpHandler webservice
- 24. Interruzione dello script di anteprima immagine al caricamento della stessa immagine precedentemente cancellata
- 25. jQuery Anteprima pagina Web
- 26. Anteprima arrotondato in iphone
- 27. Matrice di byte anteprima anteprima telecamera
- 28. Utilizzando readAsDataURL() per un'immagine anteprima
- 29. crea immagine GIF con mappa colori fissa usando Image Magick
- 30. Crea immagine bitmap da EditText e il suo contenuto
[ImageResizer] (http://imageresizing.net) è una libreria sicura per server progettata per eseguire esattamente ciò che ti serve. A differenza di GetThumbnailImage, produce risultati di alta qualità e, a differenza degli esempi di codice, non perde la memoria come un setaccio. Potresti non interessarti adesso, ma lo farai tra qualche mese quando sarai al ginocchio nelle discariche principali. –
http://www.codeproject.com/Articles/20971/Thumbnail-Images-in-GridView-using-C – Freelancer