PDA

View Full Version : اضافه اتوماتیک کپی رایت به عکس های آپلود شده



iekrang
دوشنبه 18 مهر 1384, 12:08 عصر
من میخواهم عکس هایی که توسط ادمین آپلود میشه به طور اتوماتیک یه جمله کپی رایت بهشون اضافه بشه.
در این مورد سرچ کردم و این مقاله رو پیدا کردم.
http://www.codeproject.com/csharp/Watermark_Creator.asp
کسی تاحالا اینکار و انجام داده؟
و اینکه با Watermarkمیشه توی وب کار کرد؟

Behrouz_Rad
دوشنبه 18 مهر 1384, 12:56 عصر
از لینکی که دادید نمی تونید استفاده کنید زیرا:


Before running the application do not forget to run "MarkMyImage.reg". This will create the necessary keys into your registry (to store user preference).

و اما...
روش کار به این صورته که ابتدا یک شئ از نوع Bitmap ایجاد میکنید و یک هندل گرافیکی برای کار بر روی ایمیج ساخته شده به دست میارید . سپس با صدا زدن متد DrawString شئ گرافیک ایجاد شده ، متن یا کاراکتر مورد نظر رو بر روی سطح گرافیکی ایجاد میکنید:


Dim bmp As New System.Drawing.Bitmap(Server.MapPath(".") & ".\Images\myFile.jpg")
Dim g As Graphics = System.Drawing.Graphics.FromImage(bmp)
g.FillRectangle(New SolidBrush(Color.White), 0, 0, bmp.Width, 20)
g.DrawString("این عکس مشمول قوانین کپی رایت است", New Font("Tahoma", 15), New SolidBrush(Color.Black), 1, 1)
bmp.Save(Server.MapPath(".") & ".\Images\myFile.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

هر دستوری را که متوجه نشدید، جهت توضیح بفرمایید.
موفق باشید.

iekrang
یک شنبه 24 مهر 1384, 09:16 صبح
آقا بهروز در مورد / ها حق با شما بود.ممنون از توضیحتون.
ولی خط آخر رو هنوز مشکل دارم.
+A generic error occurred in GDI
این پیغام رو میده.ممکنه راهنماییم کنید.

Happy_davood
جمعه 20 آبان 1384, 08:32 صبح
سلام
ببخشید سئوال من ربط زیادی به موضوع نداره ولی من هم با همین خطا مواجه شدم . البته یه پست جدید زدم ولی اتفاقی دیدم که اینجا هم مطرح شده .
البته روی سیستم خودم این خطا پیش نمیاد و فقط موقعی که برنامه روی به روی یه سیستم دیگه جابجا میکنم این خطا رو میبینم .

Behrouz_Rad
جمعه 20 آبان 1384, 17:06 عصر
این خطا بدین خاطر رخ میدهد، چون کتابخانه ی +GDI، به منظور کارایی و افزایش سرعت کار، به جای خواندن تمامی اطلاعات تصویر، تنها اقدام به خواندن هدرهای تصویر که شامل اطلاعاتی همانند طول، عرض، تعداد رنگ ها و ... می کند.
به همین خاطر، تا زمانی که شی Image اصلی از حافظه خارج نشده، شی یا کلاس دیگری مجاز به استفاده از آن تصویر نیست و بالطبع شما قادر به بازنویسی مجدد تصویر نخواهید بود و تصویر اصطلاحا Lock (قفل) است.
به احتمال زیاد شما از دو کلاس Image استفاده کرده اید و در حالی که کلاس اول Dispose نشده است، کلاس دوم را به منظور انجام عملیات بر روی تصویر فراخوانی کرده اید!
در ضمن، به منظور جلوگیری از کاهش محسوس افت تصویر در زمان تغییر سایز، از متد DrawImage کلاس Graphics استفاده کنید.
از پروسیجر بی نقص زیر استفاده کنید:


Private Sub CreateThumbnailImage(ByVal strFileName As String, ByVal imgThumbWidth As Int32, ByVal imgThumbHeight As Int32, ByVal strFileSavePath As String)
Dim fullSizeImage As Drawing.Image = Drawing.Image.FromFile(strFileName)
Dim thumbnailImage As Drawing.Image = fullSizeImage.GetThumbnailImage(imgThumbWidth, imgThumbHeight, Nothing, New IntPtr)
Dim t As Drawing.Image = New Bitmap(imgThumbWidth, imgThumbHeight)
Dim g As Graphics = Graphics.FromImage(t)
g.DrawImage(thumbnailImage, 0, 0, t.Width, t.Height)
fullSizeImage.Dispose()
thumbnailImage.Dispose()
g.Dispose()
t.Save(strFileSavePath, Imaging.ImageFormat.Jpeg)
End Sub


موفق باشید.

AspNet
جمعه 20 آبان 1384, 20:51 عصر
شاید این به دردتون بخوره:

http://hima.ws/aspnet.aspx?id=1

Happy_davood
چهارشنبه 02 آذر 1384, 15:36 عصر
خوب من هم درباره این خطای :
A Generic Error in GDI+

ولی جواب شما مشکل من رو حل نمی کنه . بی زحمت به کد من هم نگاه کنید :


byte[] ByteImageBytes = (byte[]) SQL_DataReader["Photo"];
if(ByteImageBytes.Length != 0)
{
System.IO.MemoryStream MemStream = new System.IO.MemoryStream(ByteImageBytes);

System.Drawing.Bitmap MemPhoto = new Bitmap(MemStream);
MemPhoto.Save(Server.MapPath("") + "\\Images\\MemCardPhoto.JPG", System.Drawing.Imaging.ImageFormat.Bmp);


this.ImageMemCardPhoto.ImageUrl = Server.MapPath("") + "\\Images\\MemCardPhoto.JPG";
}
else
this.ImageMemCardPhoto.ImageUrl = Server.MapPath("") + "\\Images\\EmptyMemPhoto.JPG";

Behrouz_Rad
پنج شنبه 03 آذر 1384, 08:03 صبح
درست می فرمایید!
جوابی که دادم مربوط به تاپیک دیگری میشد (از بس ماشاا... تعداد سوالات زیاد هست)
اما جواب بنده بی ربط هم نبوده....

این خطا بدین خاطر رخ میدهد، چون کتابخانه ی +GDI، به منظور کارایی و افزایش سرعت کار، به جای خواندن تمامی اطلاعات تصویر، تنها اقدام به خواندن هدرهای تصویر که شامل اطلاعاتی همانند طول، عرض، تعداد رنگ ها و ... می کند.
به همین خاطر، تا زمانی که شی Image اصلی از حافظه خارج نشده، شی یا کلاس دیگری مجاز به استفاده از آن تصویر نیست و بالطبع شما قادر به بازنویسی مجدد تصویر نخواهید بود و تصویر اصطلاحا Lock (قفل) است.
به احتمال زیاد شما از دو کلاس Image استفاده کرده اید و در حالی که کلاس اول Dispose نشده است، کلاس دوم را به منظور انجام عملیات بر روی تصویر فراخوانی کرده اید!
متغیر MemPhoto ، ارجاعی به Stream شما دارد ، از کد بنده ایده بگیرید و سعی در آزاد کردن هندل عکس کنید.
موفق باشید.

iekrang
دوشنبه 15 اسفند 1384, 11:55 صبح
بعد از اضافه کردن متن به عکس سایز عکسم تغییر میکنه!مشکل از چیه؟آیا باید سایز عکس رو جایی تنظیم کنم؟ممنون میشم اگر من رو راهنمایی کنید.

rz_rahgozar
یک شنبه 03 دی 1385, 22:16 عصر
سلام دوستان :
این مشکل GDI+ را نیز من هم بهش بر خوردم اما نکته اینجاست که لوکال مشکل ندارد و وقتی روی سرور می رود به اشکال بر می خورد .

پر مشین رایت هم دادم اما نشد