PDA

View Full Version : نوشتن متن روی عکس



lyrebird
شنبه 26 فروردین 1391, 13:37 عصر
سلام
من برای نوشتن متن روی عکس از کد زیر استفاده می کنم:



Bitmap bitMapImage = new System.Drawing.Bitmap(Server.MapPath("42-33354795.jpg"));
Graphics graphicImage = Graphics.FromImage(bitMapImage);

//Smooth graphics is nice.
graphicImage.SmoothingMode = SmoothingMode.AntiAlias;

//I am drawing a oval around my text.
graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360);

//Write your text.
graphicImage.DrawString("سلام", new Font("Tahoma", 12, FontStyle.Bold), SystemBrushes.WindowText, new Point(100, 210));

//Set the content type
Response.ContentType = "image/jpeg";

//Save the new image to the response output stream.
bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg);




و بدون مشکل انجام میشه. وقتی نام فونت رو تغییر میدم، فقط فونت هایی که به صورت پیش فرض در ویندوز نصب می شن رو پشتیبانی می کنه، و فونت هایی مثل zar، nazanin و ... رو پشتیبانی نمی کنه. این معنیش اینه که فونت ها روی سرور نصب نیستند.
راه حلی برای این مشکل وجود داره؟

lyrebird
شنبه 26 فروردین 1391, 14:39 عصر
فکر می کنم شما سوال منو نخوندین
من با تعیین فونت متن مشکل دارم، نه نوشتن متن. (البته می خواستم موضوع سوالم رو اصلاح کنم که امکانش نبود)

d_derakhshani
شنبه 26 فروردین 1391, 14:49 عصر
عذر می خوام صورت سوال مثل قبل بود. من دوباره جواب میدم.
فونت ها رو سرور نصب نیست باید با ادمین سرور هماهنگ کنید.

lyrebird
شنبه 26 فروردین 1391, 14:55 عصر
یعنی امکان نصب فونت ها روی سرور هست؟ پشتیبانی هاستی که سایت رو آپلود کردم، گفتند که نصب فونت ها براشون امکان پذیر نیست!

d_derakhshani
شنبه 26 فروردین 1391, 15:22 عصر
پیچوندنتون. یعنی دلشون نمی خاد نصب کنن می گن امکان پذیر نیست.

lyrebird
یک شنبه 27 فروردین 1391, 10:49 صبح
شما تا به حال همچین کاری انجام دادین؟ هاستی هست که نصب فونت رو پذیرفته باشه؟
پشتیبانی ایران هاست زیر بار نمیره که فونت ها باید نصب بشن و میگه برای ما اصلا امکانش نیست که فونت رو نصب کنیم!

Alghoochi
یک شنبه 27 فروردین 1391, 13:00 عصر
سلام
من برای نوشتن متن روی عکس از کد زیر استفاده می کنم:



Bitmap bitMapImage = new System.Drawing.Bitmap(Server.MapPath("42-33354795.jpg"));
Graphics graphicImage = Graphics.FromImage(bitMapImage);

//Smooth graphics is nice.
graphicImage.SmoothingMode = SmoothingMode.AntiAlias;

//I am drawing a oval around my text.
graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360);

//Write your text.
graphicImage.DrawString("سلام", new Font("Tahoma", 12, FontStyle.Bold), SystemBrushes.WindowText, new Point(100, 210));

//Set the content type
Response.ContentType = "image/jpeg";

//Save the new image to the response output stream.
bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg);




و بدون مشکل انجام میشه. وقتی نام فونت رو تغییر میدم، فقط فونت هایی که به صورت پیش فرض در ویندوز نصب می شن رو پشتیبانی می کنه، و فونت هایی مثل zar، nazanin و ... رو پشتیبانی نمی کنه. این معنیش اینه که فونت ها روی سرور نصب نیستند.
راه حلی برای این مشکل وجود داره؟



شما می‌تونی Font ها رو بدون نصب استفاده کنی. فقط باید فونت رو از روی آدرسش لود کنی و کار حله.

واسه این‌کار باید این فضای‌های نام رو به برنامه‌ات اضافه کنی.


using System.Drawing.Text;
using System.Drawing;


حالا از این کد می‌تونی واسه بازکردن فونت استفاده کنی.


PrivateFontCollection pr = new PrivateFontCollection();
pr.AddFontFile("Font path");
Font font = new Font(pr.Families[0], 12.0f, FontStyle.Regular, GraphicsUnit.Pixel);


بارگزاری فونت از روی آدرس (http://icrazynotes.blog.com/laod-font-from-path-or-memory-stream/)

lyrebird
یک شنبه 27 فروردین 1391, 13:48 عصر
شما می‌تونی Font ها رو بدون نصب استفاده کنی. فقط باید فونت رو از روی آدرسش لود کنی و کار حله.




مرسی، جوابتون عالی بود. خیلی کمک کرد.

lyrebird
پنج شنبه 31 فروردین 1391, 10:10 صبح
در جاوا اسکریپت هم راهی هست که فونت رو از روی آدرش بارگذاری کنیم؟