Je suis en train de rééchelonner jpeg uploadé dans asp.net.net Drawing.Graphics.FromImage() retourne image en noir en blanc
Alors je vais:
Image original = Image.FromStream(myPostedFile.InputStream);
int w=original.Width, h=original.Height;
using(Graphics g = Graphics.FromImage(original))
{
g.ScaleTransform(0.5f, 0.5f); ... // e.g.
using (Bitmap done = new Bitmap(w, h, g))
{
done.Save(Server.MapPath(saveas), ImageFormat.Jpeg);
//saves blank black, though with correct width and height
}
}
Cela permet d'économiser un jpeg vierge noire tout fichier je le donne. Bien que si je prends flux d'images d'entrée immédiatement dans done
bitmap, il ne recompresser et enregistrez-bien, comme:
Image original = Image.FromStream(myPostedFile.InputStream);
using (Bitmap done = new Bitmap(original))
{
done.Save(Server.MapPath(saveas), ImageFormat.Jpeg);
}
Dois-je faire un peu de magie avec g?
màj: j'ai essayé:
Image original = Image.FromStream(fstream);
int w=original.Width, h=original.Height;
using(Bitmap b = new Bitmap(original)) //also tried new Bitmap(w,h)
using (Graphics g = Graphics.FromImage(b))
{
g.DrawImage(original, 0, 0, w, h); //also tried g.DrawImage(b, 0, 0, w, h)
using (Bitmap done = new Bitmap(w, h, g))
{
done.Save(Server.MapPath(saveas), ImageFormat.Jpeg);
}
}
même histoire - noir pur de dimensions correctes
merci, c'est logique. Je l'ai fait un peu différemment, mais votre code était bon illustration – joox
Où avez-vous ** remplir la zone avec l'arrière-plan de l'image ** exactement? –
Dans la ligne de g.DrawImage (img, drect); , ce code remplit l'arrière-plan! – Myra