سلام وقت بخیر
من با استفاده از این مقاله تونستم روی عکس متن دلخواه رو بنویسم:
https://barnamenevisan.org/Articles/Article3533.html
اما این روش یه اشکال داره اونم اینه اول عکس اصلی باید ذخیره بشه و فراخوانی بشه و به کاربر چیزی که نمایش داده میشه عکس اصلی + تغییرات یا نوشته هایی هست که ما اعمال می کنیم. اما در سرور اصلی عکس همون عکس قبلی هست.
چی کار کنم که قبل از اینکه اصلا عکس آپلود بشه این تغییرات روش اعمال بشه و عکس + نوشته ها با هم روی هاست ذخیره بشن؟
امکانش نیست دوست من
ما معمولا آپلود میکنیم نوشته را روی عکس میندازیم و ذخیره میکنیم و سپس تصویر اول را حذف میکنیم
یعنی الان که آپلود کردم، روش بنویسم، بعد قبلی رو پاک کنم، دوباره آپلود کنم؟
بله
ولی چرا دوباره آپلود کنید ؟ در سرور هست دیگه !
من نفهمیدم الان. من دارم برای اولین بار عکس رو اپلود می کنم. اول که می ره هیچ. بعد دوباره می خونمش تغییر می دم. باز دوباره می فرستم؟ بعد چطوری بفرستم؟
ببینید اول آپلود میشه در سرور مثلا پوشه Images بعد شما از همونجا میخونید و متن را روش میندازید و با نام جدید در همون مسیر ذخیره میکنید و قبلی رو حذف میکنید
چرا دوباره باید بفرستید ؟
چطور دوباره روش ذخیره کنم. بلد نیستم
نمونه زیر رو ببینید
ممنونم خوب بود ولی یه مشکل دارم. من این قسمت کد رو نیاز ندارم:
//Start file download. Response.Clear(); Response.ContentType = "image/png"; Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
از طرفی این کد که مربوط به FileUpload هست رو کجا بنویسم؟
fuPicture.SaveAs(FilePath);
الان بخوام تغییرش بدم چی میشه؟ به طوری که نمی خوام دانلود بشه میخوام مستقیم عکس + نوشته در سرور ذخیره بمونه
به این بخش توصیر را در مسیر مورد نظر ذخیره کنید
bmp.Save
نتونستم. اینم کدهای من:
fuPicture.SaveAs(FilePath); string WaterMarkText="متن آزمایشی"; using (Bitmap bmp = new Bitmap(fuPicture.PostedFile.InputStream, false)) { using (Graphics grp = Graphics.FromImage(bmp)) { //Set the Color of the Watermark text. Brush brush = new SolidBrush(Color.Red); //Set the Font and its size. Font font = new System.Drawing.Font("yekan", 30, FontStyle.Bold, GraphicsUnit.Pixel); //Determine the size of the Watermark text. SizeF textSize = new SizeF(); textSize = grp.MeasureString(WaterMarkText, font); //Position the text and draw it on the image. Point position = new Point((bmp.Width - ((int)textSize.Width + 10)), (bmp.Height - ((int)textSize.Height + 10))); grp.DrawString(WaterMarkText, font, brush, position); using (MemoryStream memoryStream = new MemoryStream()) { //Save the Watermarked image to the MemoryStream. bmp.Save(memoryStream, ImageFormat.Jpeg); memoryStream.Position = 0; bmp.Save(FilePath); //Write the MemoryStream to the Response. memoryStream.WriteTo(Response.OutputStream); Response.Flush(); Response.Close(); Response.End(); } } }
یعنی اول آپلود کردم بعد هم کدها رو یکم عوض کردم و جای دانلود نوشتم bmp.Save روی همون مسیر که آپلود کردم و نتیجه اون عکس شد که فرستادم
انجام شد. و تمام. ممنون جناب مدائنی.
راه حل: این قطعه کد رو حذف کردم»
using (MemoryStream memoryStream = new MemoryStream()) { //Save the Watermarked image to the MemoryStream. bmp.Save(memoryStream, ImageFormat.Jpeg); memoryStream.Position = 0; //Write the MemoryStream to the Response. memoryStream.WriteTo(Response.OutputStream); Response.Flush(); Response.Close(); Response.End(); }
و این رو اینطور تغییر دادم:
bmp.Save(FilePath, ImageFormat.Jpeg);
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)