هل حاولت استخدام .net لمعالجة الصور؟ في أحد المشاريع التي نفذتها الشركة مؤخرًا، تم تخزين الكثير من صور المنتجات في قاعدة البيانات، ولكن لم يكن لدى أي منها معلومات حقوق الطبع والنشر. في ذلك الوقت، طلب العميل تسمية جميع الصور باسم الشركة؟ في هذا الوقت ماذا يجب أن تفعل؟
ورغم أنني ما زلت مبتدئًا، إلا أنه لا يزال هناك العديد من الحلول لهذه المشكلة، والتي يمكن تلخيصها فيما يلي:
1. استخدم برامج معالجة الرسومات، مثل Photoshop وغيره، واستخدم وظيفة المعالجة الدفعية الخاصة به لتحقيق هذه الوظيفة، ولكن كل الوقت الذي يضيفه موظف إدخال البيانات إذا كنت تريد إدخال الصور، فيجب عليك معالجتها، وهو أمر مزعج للغاية. أرى أن موظف الإدخال عادة ما يكون لطيفًا جدًا معي ويستقبلني بابتسامة كل يوم. هل يمكنني تحمل التعذيب ها؟ تم رفض هذه الخطة.
2. باستخدام المعالجة السلسة للصور على .net، عندما يقوم موظف الإدخال بتحميل الصورة، فإنه سيضيف شعار الشركة تلقائيًا. أليس هذا أفضل؟ حسنًا، يمكن تصنيفها ضمن أفضل 10000 حل في عام 2005.، فقط افعل ذلك كما تقول.
باستخدام System.Drawing؛
باستخدام System.IO؛
باستخدام System.Drawing.Imaging؛
AddTextToImg (اسم ملف السلسلة، نص السلسلة) ؛
{
إذا (!File.Exists(MapPath(fileName)))
{
طرح FileNotFoundException الجديد("الملف غير موجود!");
}
إذا (نص == سلسلة.فارغة)
{
يعود؛
}
// تحتاج أيضًا إلى تحديد ما إذا كان نوع الملف هو نوع صورة، ولن يتم وصفه هنا
System.Drawing.Image image = System.Drawing.Image.FromFile(MapPath(fileName));
Bitmap bitmap = new Bitmap(image,image.Width,image.Height);
Graphics g = Graphics.FromImage(bitmap);
float FontSize = 12.0f;
float textWidth = text.Length*fontSize; // طول النص
// حدد منطقة مستطيلة بالأسفل، ثم ارسم نصًا أسود على خلفية بيضاء في هذا المستطيل
تعويم rectX = 0؛
تعويم rectY = 0؛
float rectWidth = text.Length*(fontSize+8);
float rectHeight = FontSize+8;
// قم بتعريف المجال المستطيل
RectangleF textArea = new RectangleF(rectX,rectY,rectWidth,rectHeight);
Font Font = new Font("宋体",fontSize);
Brush WhiteBrush = new SolidBrush(Color.White); // فرشاة بيضاء، تستخدم لرسم النص
Brush blackBrush = new SolidBrush(Color.Black); // فرشاة سوداء، ارسم الخلفية باستخدام
g.FillRectangle(blackBrush,rectX,rectY,rectWidth,rectHeight);
g.DrawString(text,font,whiteBrush,textArea);
MemoryStream ms = new MemoryStream() ;
//حفظ بنوع Jpg
bitmap.Save(ms,ImageFormat.Jpeg);
// إخراج الصورة المعالجة، لتسهيل العرض التوضيحي، أعرض الصورة على الصفحة.
استجابة. واضح ()؛
Response.ContentType = "image/jpeg";
Response.BinaryWrite( ms.ToArray() );
g.Dispose();
bitmap.Dispose();
image.Dispose();
}
المكالمة بسيطة للغاية،
AddTextToImg("me.jpg"، "Xiao Zhi")؛
أشعر أن .net قوية حقًا. هذه الوظائف هي سلع فاخرة في Asp، ولكن يمكن القيام بها بسهولة بيئة صافية كاملة!