PDA

View Full Version : Uploadify و Resize



bftarane
جمعه 24 آذر 1391, 22:05 عصر
سلام. من براي resize عکسي که توسط Uploadify آپلود ميخواد بشه کدهاي زير رو نوشتم

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;



public class Handler : IHttpHandler {

public void ProcessRequest (HttpContext context) {
HttpPostedFile fileToUpload = context.Request.Files["Filedata"];
string pathToSave = HttpContext.Current.Server.MapPath("~/Files/") + fileToUpload.FileName;

string targetPath=HttpContext.Current.Server.MapPath("~/Files/") + fileToUpload.FileName;
System.IO.Stream strm = fileToUpload.InputStream;
var targetFile = targetPath;
GenerateThumbnails(0.5, strm, targetFile);
fileToUpload.SaveAs(pathToSave);
}

public bool IsReusable {
get {
return false;
}
}


private void GenerateThumbnails(double scaleFactor, System.IO.Stream sourcePath, string targetPath)
{

try
{
using (var image = System.Drawing.Image.FromStream(sourcePath))
{
var newWidth = 351;
var newHeight = 216;
var thumbnailImg = new System.Drawing.Bitmap(newWidth, newHeight);
var thumbGraph = System.Drawing.Graphics.FromImage(thumbnailImg);
thumbGraph.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQu ality;
thumbGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality ;
thumbGraph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQua lityBicubic;
var imageRectangle = new System.Drawing.Rectangle(0, 0, newWidth, newHeight);
thumbGraph.DrawImage(image, imageRectangle);
thumbnailImg.Save(targetPath, image.RawFormat);
}
}
catch (Exception)
{

throw;
}


}

}
عکس آپلود ميشه ولي resize نميشه دليلش چي مي تونه باشه؟

bftarane
شنبه 25 آذر 1391, 18:24 عصر
لطفاً راهنمايي کنيد در مورد اين سوال. من با ashx. ها کار نکردم چندان. يه مطلبي خوندم اومده بود براي resize عکس از اين فايل استفاده کرده بود و مي يومد در کنترل Image تا جايي که يادمه عرض و ارتفاع رو با کوئري استرينگ پاس مي داد به اين handler و اونجا تغيير سايز انجام ميشد. اما مسئله من اينه که عرض و ارتفاع رو من دارم خودم دستي مي دم بهش پس مشکل چيه؟
خيلي دلم مي خواد وقت پيدا کنم برم حسابي درباره اين httphandlerها مطالعه کنم.

hamed_hossani
شنبه 25 آذر 1391, 18:52 عصر
سلام
شما امدید فایل ذو گرفتید و مسیرش هم مشخص کردین

string pathToSave = HttpContext.Current.Server.MapPath("~/Files/") + fileToUpload.FileName;
بعد امدین یکسری کد نوشتین

string targetPath=HttpContext.Current.Server.MapPath("~/Files/") + fileToUpload.FileName;
System.IO.Stream strm = fileToUpload.InputStream;
var targetFile = targetPath;
GenerateThumbnails(0.5, strm, targetFile);
و در اخر

fileToUpload.SaveAs(pathToSave);
به نظر من کاری روی pathToSave صورت نگرفته!

bftarane
شنبه 25 آذر 1391, 20:20 عصر
چرا ديگه اون متد GenerateThumbnails اون کاري که من ميخوام رو بايد انجام بده ديگه متد در زماني که از فايل آپلود معمولي استفاده مي کنم کار ميکنه.

اينم کدهاش مي تونيد امتحان کنيد.

protected void btn_preview_Click(object sender, EventArgs e)
{

preview();
if (preview()==true)
{
btn_Insert.Visible = true;
}
}
public bool preview()
{
bool result = false;
if (Page.IsValid)
{
if (FileUpload1.HasFile)
{
string filename = "nopic.gif";
if (FileUpload1.FileContent.Length / 1024 > 800)
{
Label1.Text = "حجم بيشتر از حد مجاز است";
result = false;

}
else
{
filename = FileUpload1.FileName;
filename = GetUniqueUploadFileName("~/ImgSlideShow", filename);
FileUpload1.SaveAs(Server.MapPath("~/ImgSlideShow/" + filename));
string targetPath = Server.MapPath("~/ImgSlideShow/" + filename);
Stream strm = FileUpload1.PostedFile.InputStream;
var targetFile = targetPath;
GenerateThumbnails(0.5, strm, targetFile);
ViewState["picname"] = filename;
Image1.ImageUrl = "~/ImgSlideShow/" + filename;
Label1.ForeColor = System.Drawing.Color.Green;
result = true;
Label1.Text = "فايل با موفقيت ارسال شد.";
}

}
else
{
Label1.Text = "فايلي وارد نکرده ايد";
result = false;
}
}
return result;
}

private void GenerateThumbnails(double scaleFactor, Stream sourcePath, string targetPath)
{

try
{
using (var image = System.Drawing.Image.FromStream(sourcePath))
{
var newWidth = 351;
var newHeight = 216;
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);
}
}
catch (Exception)
{

throw;
}


}

hamed_hossani
شنبه 25 آذر 1391, 22:34 عصر
ای کاش ذکر می کردید کجا pathToSave رو تغییر دادید.

raziee
شنبه 25 آذر 1391, 23:35 عصر
دوستان نگاهی هم به imageresizing.net (http://imageresizing.net/) داشته باشید

bftarane
یک شنبه 26 آذر 1391, 00:28 صبح
آقاي حامد راهنمايي تون عالي بود.
متشکرم ازتون.
کدها رو به اين شکل تغيير دادم درست شد.

public class Handler : IHttpHandler {

public void ProcessRequest (HttpContext context) {
HttpPostedFile fileToUpload = context.Request.Files["Filedata"];
string pathToSave = HttpContext.Current.Server.MapPath("~/Files/") + fileToUpload.FileName;

string targetPath = pathToSave;
System.IO.Stream strm = fileToUpload.InputStream;
var targetFile = targetPath;
GenerateThumbnails(0.5, strm, targetFile);

}