Ich habe ein Fileupload-Steuerelement, mit dem Benutzer Bilder hochladen können, aber bevor sie Bilder hochladen kann Ich möchte Thomes Bilder Größe auf 640x480 Größe das Problem ist, ich kann nicht herausfinden, was als nächstes zu tun. Das ist was ich habe;Stream in Datei speichern
// CALL THE FUNCTION THAT WILL RESIZE THE IMAGE
protected void btnUploadFile_Click(object sender, EventArgs e)
{
Stream imgStream = ir.ResizeFromStream(640, fupItemImage.PostedFile.InputStream);
// What to do next?
}
// THE FUNCTION THAT WILL RESIZE IMAGE THEN RETURN AS MEMORY STREAM
public MemoryStream ResizeFromStream(int MaxSideSize, Stream Buffer)
{
int intNewWidth;
int intNewHeight;
System.Drawing.Image imgInput = System.Drawing.Image.FromStream(Buffer);
// GET IMAGE FORMAT
ImageFormat fmtImageFormat = imgInput.RawFormat;
// GET ORIGINAL WIDTH AND HEIGHT
int intOldWidth = imgInput.Width;
int intOldHeight = imgInput.Height;
// IS LANDSCAPE OR PORTRAIT ??
int intMaxSide;
if (intOldWidth >= intOldHeight)
{
intMaxSide = intOldWidth;
}
else
{
intMaxSide = intOldHeight;
}
if (intMaxSide > MaxSideSize)
{
// SET NEW WIDTH AND HEIGHT
double dblCoef = MaxSideSize/(double)intMaxSide;
intNewWidth = Convert.ToInt32(dblCoef * intOldWidth);
intNewHeight = Convert.ToInt32(dblCoef * intOldHeight);
}
else
{
intNewWidth = intOldWidth;
intNewHeight = intOldHeight;
}
// CREATE NEW BITMAP
Bitmap bmpResized = new Bitmap(imgInput, intNewWidth, intNewHeight);
// SAVE BITMAP TO STREAM
MemoryStream imgMStream = new MemoryStream();
bmpResized.Save(imgMStream, imgInput.RawFormat);
// RELEASE RESOURCES
imgInput.Dispose();
bmpResized.Dispose();
Buffer.Close();
return imgMStream;
}
Danke
Sie m verwenden Sie müssen zuerst die Position von 'imgStream' zurückspulen, indem Sie' imgStream.Position = 0' setzen. –
FWIW, es ist völlig legal für bytesRead! = Length aber bytesRead! = 0 und der Stream imgStream ist nicht leer, wenn imgStream z. ein NetworkStream. 'while (bytesRead! = 0)' ist sicherer. –
(Ich weiß, dass imgStream in diesem Fall ein Speicher-Stream ist, aber es ist wichtig, den semantischen Vertrag von Stream zu kennen, wenn man von einem Stream zu einem anderen kopiert.) –