Quiero mostrar una imagen en miniatura en una vista de cuadrícula desde la ubicación del archivo. ¿Cómo generar eso del archivo .jpeg
? Estoy usando el lenguaje C#
con asp.net
.Crear imagen en miniatura
Respuesta
usted tiene que utilizar GetThumbnailImage
método en la clase Image
:
https://msdn.microsoft.com/en-us/library/8t23aykb%28v=vs.110%29.aspx
Aquí está un ejemplo aproximado que toma un archivo de imagen y hace una imagen en miniatura de ella, a continuación, lo guarda de vuelta al disco.
Image image = Image.FromFile(fileName);
Image thumb = image.GetThumbnailImage(120, 120,()=>false, IntPtr.Zero);
thumb.Save(Path.ChangeExtension(fileName, "thumb"));
@ktsixit - Está en System.Drawing namespace (en System.Drawing.dll) –
¿Habla en serio? GetThumbnailImage produce resultados horribles en imágenes que ya tienen miniaturas incrustadas. [No cometas estos errores] (http://nathanaeljones.com/163/20-image-resizing-pitfalls/), por favor. http://imageresizing.net es de código abierto, gratuito, rápido y le dará resultados de alta calidad. –
Solo se puede usar en imágenes JPG en general. Si intenta cambiar el tamaño de una imagen PNG como esta, obtendrá este error. – HBlackorby
El siguiente código escribirá una imagen en proporcional a la respuesta, puede modificar el código para su propósito:
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();
}
Di mi ruta de archivo local en la ruta de cadena. devuelve "el formato de ruta dado no es compatible". –
di así ... var path = @ "C: \ Users \ Gopal \ Desktop \ files.jpeg"; Bitmap srcBmp = new Bitmap (ruta); –
Aquí es un ejemplo completo de cómo crear una imagen más pequeña (miniatura) Este fragmento cambia el tamaño de la imagen, la gira cuando sea necesario (si el teléfono se sostuvo verticalmente) y almohadilla la imagen si desea crear pulgares cuadrados. Este fragmento crea un JPEG, pero puede modificarse fácilmente para otros tipos de archivos. Incluso si la imagen fuera más pequeña que el tamaño máximo permitido, la imagen se comprimirá y su resolución se alterará para crear imágenes del mismo nivel de ppp y compresión.
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);
}
}
Para los usuarios de ASP.NET un pequeño ejemplo de cómo cargar un archivo, cambiar su tamaño y mostrar el resultado en la página.
//== 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. Imagen en miniatura del video
- 2. Crear imagen en miniatura para PDF en Java
- 3. CGImage crear imagen en miniatura con el tamaño deseado
- 4. miniatura PIL está girando mi imagen?
- 5. Convertir PDF a imagen en miniatura en Java
- 6. Vídeo en miniatura C#
- 7. Android cómo crear una miniatura en tiempo de ejecución
- 8. Crear imágenes en miniatura de forma dinámica (usando django)
- 9. Crear miniatura del archivo de Adobe Illustrator?
- 10. ¿Cómo crear una miniatura del archivo .BMP?
- 11. .NET: Cómo crear una miniatura desde el flash
- 12. Subir video y crear una miniatura del video en django
- 13. Crear imágenes en miniatura para archivos JPEG con el pitón
- 14. Android obtiene una ruta a la imagen desde la miniatura?
- 15. Obtener imagen Uri + miniatura de la imagen tomada con la cámara en Android
- 16. Rails PaperClip Attachments, saber si hay una miniatura de imagen?
- 17. PIL: Miniatura y terminar con una imagen cuadrada
- 18. ¿Cómo se crea una imagen en miniatura de un JPEG en Java?
- 19. haciendo jfilechooser mostrar imágenes en miniatura
- 20. Cómo crear miniatura de la primera página pdf con carrierwave
- 21. necesito crear una miniatura para cargar videos (código muy simple)
- 22. ¿Cómo crear una miniatura de un sitio web?
- 23. C# API para crear una miniatura de la página web
- 24. ffmpeg-php para crear una miniatura del video
- 25. Tener un búfer de archivo de imagen en la memoria, ¿cuál es la forma más rápida de crear su miniatura?
- 26. URL Descripción y miniatura API
- 27. Establecer OpenFileDialog como predeterminado en Vista en miniatura
- 28. ¿Cuál es la "mejor" forma de crear una miniatura usando ASP.NET?
- 29. Crear vector de imagen
- 30. C++ crear imagen
[ImageResizer] (http://imageresizing.net) es una biblioteca de servidor de seguridad diseñado para hacer exactamente lo que necesita. A diferencia de GetThumbnailImage, produce resultados de alta calidad y, a diferencia de los ejemplos de código, no pierde memoria como un tamiz. Puede que ahora no te importe, pero lo harás en unos meses cuando estés hasta las rodillas en los vertederos. –
http://www.codeproject.com/Articles/20971/Thumbnail-Images-in-GridView-using-C – Freelancer