PDA

View Full Version : سوال: ایراد کد کم کردن حجم تصاویر قبل از ارسال به سرور؟



mahan206
پنج شنبه 05 اسفند 1400, 13:28 عصر
با سلام و عرض ادب

در قسمتی از سایت ما نیاز به آپلود عکس داریم و میخوایم کاربر صفر کیلومتر هم درگیر کوچک کردن عکس و این چیزا نشه چنین کدی اماده کردم اما باز جواب نمیده و عکس 4 مگا بایتی کامل به سرور ارسال میشه و زمان بره تا آپلود بشه میخوام فقط سرعت ارسال به سرور افزایش پیدا کنه و گرنه سمت سرور بخوام کم کنم حجمش رو مشکلی نداره


<asp:fileupload id="FileUpload1" runat="server" />
<asp:requiredfieldvalidator controltovalidate="FileUpload1" runat="server" id="RequiredFieldValidator6" errormessage="" validationgroup="j1" display="Dynamic" text="" setfocusonerror="True"></asp:requiredfieldvalidator>
<input type="button" value="برای انتخاب دوبار کلیک کنید" onclick="ResizeImage()" />
<asp:HiddenField ID="HiddenField1" runat="server" />
<img width="200" height="200" src="" runat="server" id="output">
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_OnClick" />
<script type="text/javascript">

function ResizeImage() {
if (window.File && window.FileReader && window.FileList && window.Blob) {
var file = document.getElementById('<%=FileUpload1.ClientID%>').files[0];
if (file) {
var reader = new FileReader();
// Set the image once loaded into file reader
reader.onload = function (e) {

var img = document.createElement("img");
img.src = e.target.result;

var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);

var MAX_WIDTH = 300;
var MAX_HEIGHT = 300;
var width = img.width;
var height = img.height;

if (width > height) {
if (width > MAX_WIDTH) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
} else {
if (height > MAX_HEIGHT) {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
}
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);

dataurl = canvas.toDataURL(file.type);
document.getElementById('<% =HiddenField1.ClientID%>').value= document.getElementById('output').src = dataurl;
}
reader.readAsDataURL(file);

}

} else {
alert('مرورگر شما چنین کدی را ساپورت نمی کند.');
}
}

</script>


و سمت سرور

int width = 300;
int height = 300;
byte[] image1;
try
{
image1 = Convert.FromBase64String(HiddenField1.Value.Replac e("data:image/jpeg;base64,", ""));
}
catch
{
image1 = Convert.FromBase64String(HiddenField1.Value.Replac e("data:image/png;base64,", ""));
}


using (MemoryStream mem = new MemoryStream(image1))
{
Stream stream = mem;
Bitmap image = new Bitmap(stream);
Bitmap target = new Bitmap(width, height);
Graphics graphic = Graphics.FromImage(target);
graphic.DrawImage(image, 0, 0, width, height);
target.Save(Server.MapPath(@"~/up/" + FileUpload1.FileName));
}

mozhde_
پنج شنبه 05 خرداد 1401, 00:59 صبح
سعی کنید این موارد رو به متخصص بسپرید من یه پروژه برای یه برج سازی (https://fartak-company.com/%d9%85%d8%ac%d8%aa%d9%85%d8%b9-%d8%a7%d9%84%d9%85%d9%be%db%8c%d8%a7/) بنام فرتاک داشتم که همه رو متخصص اجام میداد

seo persian
دوشنبه 23 آبان 1401, 15:28 عصر
سلام میتونید از افزونه های کم کردن حجم عکس استفاده کنید.اینجا ده موردش معرفی شده

https://seopersian.com/the-best-wordpress-image-size-reduction-plugins/

ghossein
جمعه 27 آبان 1401, 12:58 عصر
سلام
لینک زیر کد resize کردن عکس در جاوا اسکریپت :
https://github.com/josefrichter/resize/blob/master/public/preprocess.js