مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

اوبالیت

عضویت از 1392/08/24

نوشتن روی عکس + ذخیره کردن

  • جمعه 27 اسفند 1395
  • 13:49
تشکر میکنم

سلام وقت بخیر

من با استفاده از این مقاله تونستم روی عکس متن دلخواه رو بنویسم:

https://barnamenevisan.org/Articles/Article3533.html

اما این روش یه اشکال داره اونم اینه اول عکس اصلی باید ذخیره بشه و فراخوانی بشه و به کاربر چیزی که نمایش داده میشه عکس اصلی + تغییرات یا نوشته هایی هست که ما اعمال می کنیم. اما در سرور اصلی عکس همون عکس قبلی هست.

چی کار کنم که قبل از اینکه اصلا عکس آپلود بشه این تغییرات روش اعمال بشه و عکس + نوشته ها با هم روی هاست ذخیره بشن؟

پاسخ های این پرسش

تعداد پاسخ ها : 11 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 27 اسفند 1395
  • 14:02

امکانش نیست دوست من

ما معمولا آپلود میکنیم نوشته را روی عکس میندازیم و ذخیره میکنیم و سپس تصویر اول را حذف میکنیم

کاربر سایت

اوبالیت

عضویت از 1392/08/24

  • جمعه 27 اسفند 1395
  • 14:28

یعنی الان که آپلود کردم، روش بنویسم، بعد قبلی رو پاک کنم، دوباره آپلود کنم؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 27 اسفند 1395
  • 14:32

بله

ولی چرا دوباره آپلود کنید ؟ در سرور هست دیگه !

کاربر سایت

اوبالیت

عضویت از 1392/08/24

  • جمعه 27 اسفند 1395
  • 14:34

من نفهمیدم الان. من دارم برای اولین بار عکس رو اپلود می کنم. اول که می ره هیچ. بعد دوباره می خونمش تغییر می دم. باز دوباره می فرستم؟ بعد چطوری بفرستم؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 27 اسفند 1395
  • 14:41

ببینید اول آپلود میشه در سرور مثلا پوشه Images بعد شما از همونجا میخونید و متن را روش میندازید و با نام جدید در همون مسیر ذخیره میکنید و قبلی رو حذف میکنید

چرا دوباره باید بفرستید ؟

کاربر سایت

اوبالیت

عضویت از 1392/08/24

  • جمعه 27 اسفند 1395
  • 14:56

چطور دوباره روش ذخیره کنم. بلد نیستم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 27 اسفند 1395
  • 15:02

نمونه زیر رو ببینید

WaterMark کردن متن روی تصویر Asp.Net

کاربر سایت

اوبالیت

عضویت از 1392/08/24

  • جمعه 27 اسفند 1395
  • 15:10

ممنونم خوب بود ولی یه مشکل دارم. من این قسمت کد رو نیاز ندارم:

 
            //Start file download.
            Response.Clear();
            Response.ContentType = "image/png";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
 

از طرفی این کد که مربوط به FileUpload هست رو کجا بنویسم؟

                                    fuPicture.SaveAs(FilePath);

الان بخوام تغییرش بدم چی میشه؟ به طوری که نمی خوام دانلود بشه میخوام مستقیم عکس + نوشته در سرور ذخیره بمونه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 27 اسفند 1395
  • 15:26

به این بخش توصیر را در مسیر مورد نظر ذخیره کنید

bmp.Save

کاربر سایت

اوبالیت

عضویت از 1392/08/24

  • جمعه 27 اسفند 1395
  • 17:50

نتونستم. اینم کدهای من:

                        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 روی همون مسیر که آپلود کردم و نتیجه اون عکس شد که فرستادم

کاربر سایت

اوبالیت

عضویت از 1392/08/24

  • جمعه 27 اسفند 1395
  • 18:00

انجام شد. و تمام. ممنون جناب مدائنی.

راه حل: این قطعه کد رو حذف کردم»

        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);

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)