PDA

View Full Version : image resize asp.net



shahram8008
سه شنبه 14 آبان 1392, 13:49 عصر
سلام دوستان
موقع آپلود یک عکس میخوام سایز عکس تغییر پیدا کند و عکش تغییر یافته سیو شود
مثلا عکسی که سایزش 500*500 هست موقع ذخیره 100*100 ذخیره شود یعنی موقع آپلود طول و عرض عکس را بگیریم و به مقدار مورد نظر تغییر بدیم بعد ذخیره کنیم.
ممنون از دوستان

mRizvandi
چهارشنبه 15 آبان 1392, 12:39 عصر
برای این منظور باید بعد از آپلود عکس، یه نمونه جدید از روی فایل اون بگیرید، اون رو داخل یک شی Bitmap لود کنید. بعد محاسبات مربوط به سایز تصویر جدید رو انجام بدید. (دو عدد باید تولید کنید. طول و عرض جدید) سپس متد GetThumbnailImage از همون شی Bitmap رو برای ساخت تصویر استفاده کنید. تصویر جدید رو در یک شی Image قرا بدید و اون رو در مسیری که می خواهید ذخیره کنید. فکر می کنم همه مراحل رو گفتم.
این هم فضای نام و شی های بیت مپ و ایمیج
System.Drawing.Bitmap
System.Drawing.Image

shahram8008
چهارشنبه 15 آبان 1392, 17:55 عصر
بسیار ممنون از راهنماییتون.یه سوال دیگه هم ازتون داشتم.برای اینکه علاوه بر سایز عکس حجم عکس رو هم کاهش بدیم.چکار باید بکنم؟
البته اگه ممکنه بوسیله کد راهنمایی کنین بسیار ممنون میشم ازتون
تشکر

demolition
چهارشنبه 15 آبان 1392, 18:28 عصر
بسیار ممنون از راهنماییتون.یه سوال دیگه هم ازتون داشتم.برای اینکه علاوه بر سایز عکس حجم عکس رو هم کاهش بدیم.چکار باید بکنم؟
البته اگه ممکنه بوسیله کد راهنمایی کنین بسیار ممنون میشم ازتون
تشکر
میتونید از کامپوننت onlineimageoptimizer استفاده کنید هر دوی این کارها رو انجام میده

korosh00
پنج شنبه 16 آبان 1392, 13:39 عصر
string








img;

img =



AppDomain.CurrentDomain.BaseDirectory.ToString() + "/img/imgsource/" + "12.jpg";

FileUpload1.PostedFile.SaveAs(img);

System.Drawing.



Image img1 = System.Drawing.Image.FromFile(img);

System.Drawing.



Bitmap bmp = new System.Drawing.Bitmap(img1, 200, 220);

bmp.Save(Server.MapPath(



"img/imgt/" + "12.jpg"));

img1.Dispose();


اینم کدی که هم فایل اصلی را ذخیره می کنه و هم فایل تغییر سایز داده شده


قبلش هم
using








System.IO;

using








System.Drawing;

using








System.Drawing.Drawing2D;

shahram8008
پنج شنبه 16 آبان 1392, 19:44 عصر
سلام.بله ممنون از شما.منم یه کدی تونستم بنویسم که هم حجم رو کم میکنه هم سایز رو...2 هفته روش کار کردم آخرش حل شد.
دوستان عزیز کد به درد بخوری هست....میتونین استفاده کنین ازش


protected void btnsave_Click(object sender, EventArgs e)
{

if (fileupload1.HasFile)
{
Guid uid = Guid.NewGuid();
string fileExtention = fileupload1.PostedFile.ContentType;
int fileLenght = fileupload1.PostedFile.ContentLength;

if (fileExtention == "image/jpg" || fileExtention == "image/jpeg" || fileExtention == "image/png" || fileExtention == "image/gif")
{
if (fileLenght < 81920)
{

string filename = Path.GetFileName(fileupload1.PostedFile.FileName);
string targetPath = Server.MapPath("~/Images/" + uid + ".jpg");
Stream strm = fileupload1.PostedFile.InputStream;
var targetFile = targetPath;
GenerateThumbnails(100,100, strm, targetFile);

lblMessage.Text = "آپلود فایل با موفقیت انجام شد";
}
else
{
lblMessage.Text = "حجم فایل انتخاب شده بیشتز از حد مجاز است";
}
}
else
{
lblMessage.Text = "پسوند فایل انتخاب شده غیر مجاز است";
}
}
}
private void GenerateThumbnails(int maxImageHeight, int maxImageWidht, Stream sourcePath, string targetPath)
{
using (var image = Image.FromStream(sourcePath))
{
var newWidth = (int)(maxImageHeight % image.Height);
var newHeight = (int)(maxImageWidht % image.Width);
var thumbnailImg = new Bitmap(newWidth, newHeight);
var thumbGraph = Graphics.FromImage(thumbnailImg);

thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
var imageRectangle = new Rectangle(0, 0, newWidth, newHeight);
thumbGraph.DrawImage(image, imageRectangle);
thumbnailImg.Save(targetPath, image.RawFormat);
}
}


البته قبلش این فضاهای نام باید اضافه بشن :
using System.Collections;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;

mahdioo12194
پنج شنبه 16 آبان 1392, 20:15 عصر
جه جوري حجم رو كم مي كنه؟!!!! اين كه اخطار ميده !!!

shahram8008
جمعه 17 آبان 1392, 09:36 صبح
بله.هم حجم و هم سایز رو کم میکنه.تست شده.اجازه بدید دوباره تست کنم بگم.من تست کردم اصلا مشکلی نبود و خوب جواب گرفتم.

shahram8008
جمعه 17 آبان 1392, 09:45 صبح
دوست عزیز بازم من تست کردم و یه شرط هم اضافه کردم.جواب داد بازم.مشکلی نداره


protected void btnsave_Click(object sender, EventArgs e)
{

if (fileupload1.HasFile)
{
Guid uid = Guid.NewGuid();
string fileExtention = fileupload1.PostedFile.ContentType;
int fileLenght = fileupload1.PostedFile.ContentLength;

if (fileExtention == "image/jpg" || fileExtention == "image/jpeg" || fileExtention == "image/png" || fileExtention == "image/gif")
{
if (fileLenght < 81920)
{

string filename = Path.GetFileName(fileupload1.PostedFile.FileName);
string targetPath = Server.MapPath("~/Images/" + uid + ".jpg");
Stream strm = fileupload1.PostedFile.InputStream;
var targetFile = targetPath;
GenerateThumbnails(120,120, strm, targetFile);

lblMessage.Text = "آپلود فایل با موفقیت انجام شد";
}
else
{
lblMessage.Text = "حجم فایل انتخاب شده بیشتز از حد مجاز است";
}
}
else
{
lblMessage.Text = "پسوند فایل انتخاب شده غیر مجاز است";
}
}
}
private void GenerateThumbnails(int maxImageHeight, int maxImageWidht, Stream sourcePath, string targetPath)
{
using (var image = Image.FromStream(sourcePath))
{
if (( image.Height<=120) || ( image.Width<=120))
{
var newWidth = (int)image.Width;
var newHeight = (int)image.Height;
var thumbnailImg = new Bitmap(newWidth, newHeight);
var thumbGraph = Graphics.FromImage(thumbnailImg);

thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
var imageRectangle = new Rectangle(0, 0, newWidth, newHeight);
thumbGraph.DrawImage(image, imageRectangle);
thumbnailImg.Save(targetPath, image.RawFormat);

}
else
{
var newWidth = (int)(maxImageHeight % image.Height);
var newHeight = (int)(maxImageWidht % image.Width);
var thumbnailImg = new Bitmap(newWidth, newHeight);
var thumbGraph = Graphics.FromImage(thumbnailImg);

thumbGraph.CompositingQuality = CompositingQuality.HighQuality;
thumbGraph.SmoothingMode = SmoothingMode.HighQuality;
thumbGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
var imageRectangle = new Rectangle(0, 0, newWidth, newHeight);
thumbGraph.DrawImage(image, imageRectangle);
thumbnailImg.Save(targetPath, image.RawFormat);
}
}
}

raziee
جمعه 17 آبان 1392, 19:12 عصر
کتابخانه ای بسیار قدرتمند:
http://imageresizing.net/