[ASP.NET] Hướng dẫn chèn chữ vào hình ảnh

Write Text On Image in ASP.NET
Nguồn: flickr.com – Ton Ten

Khi bạn sở hữu một website, bạn chia sẻ hình ảnh lên đó, và lý do nào đó bạn không muốn người khác sử dụng lại. Ví dụ như đó là hình ảnh ngôi sao nổi tiếng mà bạn chụp được. Ảnh sản phẩm bạn đang kinh doanh, không thể cho đối thủ cạnh tranh lấy và sử dụng trên website của họ, hoặc đơn giản là bạn muốn đánh dấu bản quyền lên hình ảnh của mình. Bạn có lý do chính đáng để làm như vậy, và bạn sẽ đánh dấu lên bức ảnh (watermark) của mình. Điều này chúng ta hay gặp khi lướt web, bạn cứ thử vào một trang web bất kỳ, sẽ thấy họ ghi chú lên ảnh logo hay tên website….
Có nhiều công cụ khác nhau giúp bạn làm điều đó, bạn có thể dùng công cụ online như https://www.watermark.ws, hoặc photoshop, mình thì hay dùng phần mềm FastStone Photo Resizer để chèn chữ (chèn logo) lên ảnh. Và còn rất nhiều công cụ khác…
Tuy vậy ở khía cạnh là một lập trình viên, bạn có thể không muốn dùng chúng, vì nó không chủ động. Bạn muốn tạo ra một công cụ hay chức năng hay ho nào đó, hình ảnh đưa lên website của bạn sẽ tự động chèn watermark vào. Thật thú vị phải không nào? Nếu bạn đang lập trình web với ASP.NET thì thật đơn giản để làm điều đó. Chúng ta sẽ sử dụng các thư viện .NET cung cấp sẵn và bắt tay vào ngay thôi. Hướng dẫn sau sẽ giúp bạn chèn chữ lên ảnh trong ASP.NET.

Đầu tiên chúng ta tạo ra một trang TextOnImage.aspx. Trong sự kiện Page_Load chúng ta sẽ viết code cho nó như sau:

Chú ý: Ta cần 2 thư viên sau – hãy thêm chúng vào.

using System.Drawing;
using System.Drawing.Imaging;

Code

 
protected void Page_Load(object sender, EventArgs e)
    {
        // Đường dẫn file ảnh. 
        string imageFile = Server.MapPath("~/images/girlvn.jpg");
        string textToWrite = "AO DAI VIET NAM";

        // Tạo đối tượng Bitmap truyền vào đường dẫn File ảnh
        Bitmap myBitmap = new Bitmap(imageFile);
        // Tạo đối tượng Graphic từ Bitmap
        Graphics myGraphics = Graphics.FromImage(myBitmap);
        // Định dạng Style
        StringFormat myStringFormat = new StringFormat();
        myStringFormat.Alignment = StringAlignment.Near;

        myGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
        Font myFont = new Font("Tahoma", 35, FontStyle.Regular);
        Color fontColor = Color.White;
        SolidBrush myBrush = new SolidBrush(fontColor);

        // Vẽ lại hình ảnh, chèn nội dung mới vào.
        myGraphics.DrawString(textToWrite, myFont, myBrush, new Point(430, 410), myStringFormat);

        // Xuất hình ảnh mới
        Response.ContentType = "image/jpeg";
        myBitmap.Save(Response.OutputStream, ImageFormat.Jpeg);

        // Dùng code này nếu lưu ảnh vào ổ cứng của bạn.
        // myBitmap.Save(Server.MapPath("~/images/aodai.jpg"));
    }

OK. Chúng ta F5 để xem kết quả. Nếu hiện ra như hình ở đầu bài viết thì chúc mừng bạn đã thành công.
Để sử dụng ở trang khác, ở đây chúng ta tạo thêm một trang Default.aspx.
Thêm code này vào và xem kết quả nhé.


Tuyệt vời. Tuy nhiên không dừng lại ở đó, chúng ta muốn nó phải chèn chữ vào hình cho chúng ta chọn, chứ không phải gán cứng như trên.
Chúng ta sửa lại một chút hàm Page_Load như sau: Chỉ cần sửa 2 dòng dưới này thôi nhé

 
string imageFile =Server.MapPath( Request.QueryString["file"]);
string textToWrite = Request.QueryString["text"];

Trên trang Default.aspx thay bằng. Từ nay về sau bạn chỉ cần dùng đường dẫn này thì mọi hình ảnh trên website của bạn sẽ được chèn nội dung vào. Thật đơn giản phải không nào?


Kết quả

Write Text On Image in ASP.NET
Nguồn: flickr.com – Ton Ten

Chúc các bạn thành công.

Chương trình hẹn giờ tắt máy tính bằng C#

Chương trình hẹn giờ tắt máy tính
Chương trình hẹn giờ tắt máy tính

Khi mới làm quen với chiếc máy vi tính, tôi đã luôn tò mò làm thế nào mình có thể viết một trang web, viết một phần mềm nho nhỏ. Có lẽ đó là lý do tôi chọn theo ngành Công nghệ Thông tin. Tuy vậy, tôi cũng chưa thể viết ngay được một phần mềm cho ra hồn, khi vào ĐH. Cho đến khi học về C#, Windows Form, tôi mới bắt đầu tự viết các phần mềm nho nhỏ, như chương trình hẹn giờ tắt máy tính, chương trình nghe nhạc, chương trình xem ảnh, chương trình thay đổi màn hình desktop (Windows XP)….
Bạn thấy đấy, nó không lớn, và cũng có nhiều người làm rồi, tuy vậy với một người yêu thích lập trình giống như tôi cảm giác tự mình làm ra một phần mềm (made by tự tui) vẫn rất thú vị. Và tôi nghĩ nhiều bạn lúc mới bắt đầu cũng có suy nghĩ giống vậy. Tôi vẫn thích dùng phần mềm do mình viết ra hơn, dù nó không thực sự là hoàn hảo.
Hôm nay, tôi sẽ hướng dẫn các bạn viết một chương trình nho nhỏ, đó là chương trình hẹn giờ tắt máy tính bằng C#. Bạn có thể sử dụng nó mỗi lúc để máy nghe nhạc, hay nghe truyện ma trước khi ngủ, tặng cho bạn bè, hay tặng bạn gái của bạn… Tùy tính sáng tạo của bạn, tôi có vài gợi ý như là: Hẹn giờ tắt máy, hẹn giờ đi chơi với bạn gái, hẹn giờ cứ tới 9h tối là hát bài “Chúc bé ngủ ngon” :D. Nó cũng hữu ích trong trường hợp bạn ngồi quá lâu trước máy vi tính, nó nhắc nhở bạn bằng một bài hát yêu thích, hay hiện lên hình ảnh cô gái sexy nào đó sau mỗi 45 phút. (Ý tưởng cũng không tồi nhỉ?)
Tôi đặt tên cho ứng dụng của mình là AppAutoShutdown. Bạn có thể đặt tên nào mà bạn thích. 🙂

Video Chương trình hẹn giờ tắt máy tính C#

Tóm tắt Video

  • Tạo dự án Windows Form trong VS
  • Thiết kế giao diện màn hình chính
  • Sử dụng control Timer
  • Viết Class ExitWindows
  • Xử lý sự kiện khi hẹn giờ

Hãy sáng tạo theo cách của bạn. Nâng cao một chút như khởi động cùng windowns, thu gọn chương trình vào khay hệ thống, hay hẹn giờ vào thời gian kế tiếp, như 12h chẳng hạn, thay gì 1h30ph.

Nếu bạn đã hoàn thành theo hướng dẫn mà vẫn gặp khó khăn, hãy tải mã nguồn ứng dụng tại đây:  Download hoặc tải về file exe của chương trình. Yêu cầu Net Framework 4.0.  AppAutoShutdown.Exe

Cảm ơn bạn đọc và tôi luôn đánh giá cao phản hồi của bạn.

10 trang thông báo lỗi 404 vui mắt và sáng tạo nhất

Trên thế giới Internet, đối với người dùng phổ thông, có thể nói lỗi 404 là một trong những loại lỗi thường gặp nhất. Theo đó, bạn sẽ gặp lỗi 404 khi một đường dẫn bị hỏng, không khả dụng hoặc đơn giản là bạn không được cấp quyền truy cập đường dẫn này. Thay vì để những thông báo 404 nhàm chán gây khó chịu người dùng, những website dưới đây đưa ra những trang thông báo lỗi 404 hết sức sáng tạo, và vui mắt.

Sad Server

tuanitpro.com-error-404-acm-sad-serverClick vào một đường link quan trọng nhưng lại gặp trang báo lỗi 404 có thể mang lại cảm giác khó chịu cho người dùng. Tuy nhiên, nếu gặp phải một trang báo lỗi như của website này, chắc chắn bạn sẽ… mủi lòng trước những gì website “tâm sự”: “Tôi đã cố gắng rất nhiều. Nhưng không có tác dụng. Tôi thực sự thất vọng. Bạn thấy đấy, tôi cũng chỉ là một máy chủ, cố gắng ghi nhớ cả vũ trụ và phục vụ bạn từng trang web một và rồi nó thậm chí còn chẳng tồn tại…”

Link

404 Pac-Man

tuanitpro.com-error-404-blue-fountain-mediaBiến trang báo lỗi nhàm chán thành giao diện trò chơi huyền thoại PacMan, có thể trang báo lỗi này sẽ làm bạn muốn… thường xuyên gặp lỗi hơn chăng?

Link

Underground Error

tuanitpro.com-error-404-bluedanielMô phỏng lại một ga tàu điện ngầm theo phong cách cực kì chi tiết và nghệ thuật, người dùng còn có thể tương tác với trang báo lỗi 404 này y như một bộ phim hoặc một trò chơi phiêu lưu nào đó. Hãy ở sân ga, đợi đoàn tàu tới mở cửa và click vào cánh cửa để cảm nhận.

Link

Screaming Goat

tuanitpro.com-error-404-blueggTheo trang báo lỗi 404 của website này, một trang báo lỗi có thể làm cả một chú dê phải gào lên vì bực tức chứ không riêng gì người dùng.

Link

Lloyd Christmas Can’t Believe What He’s Seeing

tuanitpro.com-error-404-codeoNo! No, no, no, no, no!!!

Link

Bubble Pop

tuanitpro.com-error-404-hot-dotSố 404 được thiết kế tạo thành từ rất nhiều bong bóng. Bạn hãy thử click vào số 404 để tận hưởng cảm giác thú vị mà trang báo lỗi này mang lại.

Link

Yes, Exactly

tuanitpro.com-error-404-kvartirakrasivoCó thể bạn sẽ không hiểu trang báo lỗi 404 này muốn nói đến điều gì nhưng ai quan tâm cơ chứ, hình ảnh âm nhạc và công trường xây dựng. Đây là một trang thông báo lỗi sáng tạo là nó rất thú vị phải không nào?

Link

Newman!

tuanitpro.com-error-404-nouveller

 

Park offline, reboot required. Park đang offline, yêu cầu khởi động lại.

Link

This Could Go On For Days

tuanitpro.com-error-404-visitsteve

Trang báo lỗi độc đáo mô phỏng lại nhiều thời điểm trong một ngày trên một sa mạc.

Link

Honorable Mentions

tuanitpro.com-error-404z-homestarTrang web thông báo lỗi với nhân vật hoạt hình vui nhộn, kết hợp giao diện thông báo lỗi 404 cổ điển của IE 6. Bạn có thể tìm thấy thú vị ở đây

Link

“We’ve Got Motion!”

Và cuối cùng, thông báo lôi 404 với một video thú vị.

Nosh: 404 from Firespotter Labs on Vimeo.

Link

Nguồn: http://time.com/3478874/best-404-error-pages/

4 Kỹ năng quan trọng nhất đối với một lập trình viên

Với rất nhiều công nghệ, ngôn ngữ lập trình và các nền tảng phát triển như hiện nay, thì rất khó để nhận ra đâu là thứ tốt nhất để bạn đầu tư thời gian và công sức học những kỹ năng quan trọng trong nghề phát triển phần mềm.

Tôi thường được nhiều người hỏi về việc làm thế nào để trở thành một lập trình viên giỏi hơn, và rằng liệu họ có nên đầu tư thời gian vào một ngôn ngữ lập trình hoặc công nghệ xác định nào đó hay không. Nhưng hôm nay, tôi sẽ liệt kê ra đây một số kỹ năng tôi nghĩ rằng đó là những kỹ năng quan trọng nhất và không bị lỗi thời mà một lập trình viên nên có, chúng sẽ mang lại cho bạn những cơ hội tốt nhất trong nghề nghiệp và giúp bạn làm việc hiệu quả hơn.

Kỹ năng nào là quan trọng nhất đối với một lập trình viên?Kỹ năng nào là quan trọng nhất đối với một lập trình viên?

1. Kỹ năng giải quyết vấn đề

Trước đây, tôi đã từng nói về sự cần thiết về việc học cách giải quyết vấn đề, bởi vì tôi nghĩ rằng đây là một kỹ năng vô cùng quan trọng đối với bất kỳ một lập trình viên nào. Công việc phát triển phần mềm thì thực ra 100% là để giải quyết các vấn đề. Nếu không có những vấn đề thì chúng ta cũng chẳng cần có những phần mềm làm chi phải không bạn?

Tất cả phần mềm đều được thiết kế để giải quyết một số vấn đề của người sử dụng và trong cái giải pháp chung đó lại có một mảng rất lớn những vấn đề nhỏ hơn nảy sinh. Không quan trọng về việc bạn đang sử dụng ngôn ngữ lập trình hoặc công nghệ nào, nếu bạn không thể giải quyết những vấn đề thì bạn không phải là một người phát triển phần mềm giỏi.

Kỹ năng giải quyết vấn đề là rất quan trọngMột điều đáng ngạc nhiên là hầu hết các lập trình viên lại rất yếu trong kỹ năng giải quyết vấn đề. Tôi thường xuyên nghe được những lời than phiền về các buổi phỏng vấn tuyển dụng rằng nó thì quá khó, bởi vì họ đã hỏi lập trình viên về cách giải quyết một vài vấn đề phức tạp. Tôi đã nói về việc tại sao những buổi phỏng vấn khó lại là một điều tốt và một phần của lý do là bởi vì họ muốn kiểm tra khả năng giải quyết vấn đề của các lập trình viên mà thôi. Tôi biết rằng có rất nhiều lập trình viên vẫn không đồng ý với tôi về quan điểm này và họ không hiểu tại sao một trang web giống như TopCoder sẽ làm tăng khả năng phát triển phần mềm của họ lên rất nhiều, nhưng từ kinh nghiệm cá nhân thì tôi biết rằng chính việc thực hành cách giải quyết vấn đề trên TopCoder là bước ngoặt trong nghề nghiệp của tôi.

Bạn hãy nghĩ về một người thợ mộc làm ví dụ. Nếu muốn trở thành một người thợ mộc thành công, thì bạn nên giỏi trong việc cắt gỗ. Bạn cũng phải có khả năng thực hiện được tất cả các dạng cắt và sử dụng nhiều công cụ khác nhau. Không quan trọng là bạn có bao nhiêu năm kinh nghiệm trong nghề thợ mộc hay bạn có khả năng thiết kế đồ mỹ nghệ tốt đến đâu, nếu mỗi lần bạn thử cắt gỗ mà bạn phải khó nhọc lắm mới hoàn thành được nhát cắt đó thì bạn không phải là một người thợ mộc giỏi.

Cắt gỗ là một kỹ năng cơ bản của nghề thợ mộc, cũng giống như giải quyết vấn đề là kỹ năng cơ bản của nghề phát triển phần mềm.

2. Kỹ năng tự học

Kỹ năng tự họcCó thể nói rằng không có một kỹ năng nào trong cuộc sống lại quan trong bằng kỹ năng học cách để học. Kỹ năng này đặc biệt quan trọng trong ngành phát triển phần mềm, bởi vì không lĩnh vực nào mà tôi biết lại có tốc độ thay đổi nhanh hơn là lĩnh vực phát triển phần mềm.

Bạn không thể biết tất cả về mọi thứ. Thậm chí bạn cũng không thể đầu tư thời gian để trở nên tinh thông dù chỉ một công nghệ hoặc framework xác định nào đó — bởi vì mọi thứ thay đổi quá nhanh! Thay vì đó bạn cần có khả năng nhanh chóng thu được kiến thức mà bạn cần cho công việc đang làm. Nếu bạn thực sự muốn có một kỹ năng mà sẽ giúp bạn luôn thuận lợi trong nghề phát triển phần mềm, thì hãy học cách làm thế nào để dạy chính mình.

Chỉ có một cách duy nhất để phát triển kỹ năng này là hãy thực hành nó. Hãy học một ngôn ngữ lập trình hoặc công nghệ mới, thậm chí nếu bạn nghĩ rằng mình sẽ chẳng bao giờ sử dụng nó. Bạn sẽ rất ngạc nhiên vì khả năng tiếp thu rất nhanh của mình, bởi vì bạn đã có kiến thức nền tảng trước đó rồi. Nếu bạn có thể nhanh chóng thích nghi với sự thay đổi chóng mặt trong ngành phát triển phần mềm và các công nghệ cũng như những nền tảng kết hợp cùng với nó, thì bạn sẽ có những kỹ năng mà sẽ luôn luôn đáp ứng được yêu cầu công việc.

Mặc dù tôi có đôi chút hoài nghi về một tuyên bố của tác giả Tim Ferris, anh ta đã viết một cuốn sách tuyệt vời tên là “Trở thành đầu bếp chuyên nghiệp trong vòng 4 giờ”, nó chứa một số kỹ thuật rất hay về cách làm thế nào để học mọi thứ một cách nhanh nhất. (Tôi cũng đang muốn viết một cuốn sách như vậy về mọi chủ đề).

3. Kỹ năng đặt tên

Kỹ năng đặt tênKhi mọi người hỏi tôi rằng công việc mà tôi làm hàng ngày là gì, tôi thường nói nghề của tôi là “đọc những thứ do người khác đặt tên và đặt tên cho một số thứ.” Vâng, thực ra không một ai hỏi tôi câu hỏi đó và tôi cũng không thực sự trả lời theo cách này, nhưng tôi chắc là mình có thể làm như vậy. Phát triển phần mềm thì tất cả là về mô tả những thứ trừu tượng. Hầu hết những thứ mà chúng ta đang xây dựng thì không thể nhìn thấy được.

Mỗi lần mà bạn viết code nghĩa là bạn đang đặt tên cho một số thứ. Khi bạn đọc code của chính mình hoặc của một ai khác viết ra, thì bạn đang cố gắng hiểu đoạn code đó thông qua tên của các thứ trong nó. Hầu như tôi có thể đoán chính xác trình độ của một lập trình viên bằng cách xem qua cách họ đặt tên các phương thức, biến và các lớp trong code mà họ viết.

Một lập trình viên mà thiếu hụt khả năng đưa ra những tên tốt tới những khái niệm và dữ liệu trong code của họ thì giống như một nhà phiên dịch mà bị câm vậy. Không quan trọng liệu bạn có hiểu một điều gì đó hay không, nếu bạn không thể giải thích điều đó một cách rõ ràng thì trong chốc lát nó sẽ rời khỏi đầu của bạn.

Cách tốt nhất để nâng cao kỹ năng này là luôn luôn thực hành nó. Tôi thường đổi tên một số thứ trong code ngay khi tôi vừa đọc và hiểu nó. Ngay khi tôi bắt đầu hiểu được phương thức đó thực thi điều gì, thì tôi sẽ thay đổi tên của nó cho phù hợp với điều tôi hiểu. Tôi sẽ làm điều này cả trong khi tôi đang đọc code, thậm chí việc này không tạo ra một thay đổi logic nào trong đó. Bạn càng tập trung nhiều vào việc đưa ra những cái tên thích hợp cho các thứ, thì bạn ngày càng trở nên tốt hơn. Điều này cũng là thứ dễ nhận thấy nhất về đoạn code của bạn. Rất khó để biết liệu code của bạn thì có đúng hoặc hiệu quả hay không chỉ bằng cách xem qua chúng, nhưng nếu tôi đọc nó và có thể hiểu được thì tôi sẽ cho rằng bạn biết bạn đang làm gì.

4. Kỹ năng hợp tác với mọi người

Kỹ năng hợp tác với mọi người

Trong danh sách này thì kỹ năng hợp tác với mọi người được liệt kê cuối cùng, nhưng trong nhiều trường hợp thì có thể nói rằng nó là kỹ năng đầu tiên và quan trọng nhất. Ở mọi nơi bạn đến đều có con người. Trừ khi bạn làm việc một mình hoặc phát triển phần mềm cho chính bạn xài, còn không thì người khác sẽ ảnh hưởng đến nghề nghiệp phát triển phần mềm của bạn.

Trước đây tôi đã nói về tại sao bạn lại không muốn chỉ trích người khác, nhưng thực ra có nhiều cách để hợp tác với mọi người hơn là chỉ trích. Tôi luôn đọc lại cuốn sách nổi tiếng của tác giả Dale Carnegie, là cuốn “Đắc Nhân Tâm”, bởi vì cuốn sách này rất quan trọng trong việc học cách làm thế nào để thành công trong cuộc sống. Nếu bạn muốn phát triển những kỹ năng của con người thì hãy đọc cuốn sách này!

Vấn đề cơ bản là loài người không phải là một sinh vật có logic, chúng ta thường hành xử theo cảm xúc. Chắc chắn là chúng ta luôn tự hào về khả năng lý trí của mình, nhưng trong thực tế thì hầu hết các quyết định mà chúng ta tạo ra thì thường bị ảnh hưởng bởi cảm xúc hơn là lý trí. Điều đó có nghĩa là trong nghề phát triển phần mềm thì trừ khi bạn có thể hợp tác hiệu quả với những lập trình viên khác, những người quản lý và thậm chí là cả khách hàng; nếu không thì bạn sẽ luôn luôn gặp phải những vấn đề rắc rối, cho dù bạn có những ý tưởng tốt đến mấy hay kỹ năng của bạn có tuyệt vời ra sao đi nữa.

Tích cực tham gia vào cộng đồng phát triển phần mềm nói chung có thể giúp bạn rất nhiều trong nghề nghiệp. Nó không chỉ là về tạo mối quan hệ, nhưng việc đưa tên của bạn ra ngoài cũng là cách hay để xây dựng một “nghiệp” tốt. Thực hiện điều này thành công là bản lề dẫn tới khả năng bạn có thể hợp tác hiệu quả với mọi người. (Bạn có muốn tạo ra một con đường tắt trong việc học cách làm thế nào để hợp tác với mọi người không? Nó thì rất đơn giản. Hãy tốt bụng!)

Thế còn những kỹ năng về thực hành thì sao?

Bạn có thấy rằng tôi vẫn không đưa vào trong danh sách trên một công nghệ xác định hoặc thậm chí một vài kỹ năng đang thịnh hành hiện nay là phát triển web và di động không? Có một nền tảng vững chắc trong một vài lĩnh vực công nghệ nào đó là điều khá quan trọng, nhưng thực ra những kỹ năng đó lại không quan trọng bằng 4 kỹ năng mà tôi đã đề cập ở trên.

Nếu bạn có thể giải quyết vấn đề, học mọi thứ nhanh chóng, đặt tên mọi thứ hợp lý, và hợp tác hiệu quả với mọi người, thì bạn sẽ có được mức thành công lớn hơn nhiều trên con đường sự nghiệp và sẽ thành chuyên gia trong bất kỳ lĩnh vực công nghệ nào.

Dĩ nhiên điều quan trọng là bạn nên học một đến hai ngôn ngữ lập trình một cách sâu sắc và có một kiến thức chuyên môn đủ rộng ở trong lĩnh vực này, nhưng miễn là đừng đi quá xa với chúng và bạn nên tập trung vào 4 kỹ năng quan trọng nêu trên để luôn phát triển trong nghề.

Nguồn bài viết: Hồ Sỹ Hùng, blog công nghệ vinacode.net. Bài viết đã được sự cho phép chia sẻ của tác giả bằng email.

Là người yêu thích công nghệ, mình hay tìm đọc các trang về chia sẻ code, blog viết về công nghệ. Tình cờ đọc được blog của anh Hồ Sỹ Hùng, một developer thế hệ 8x, blog của anh có nhiều bài dịch từ các trang nước ngoài, rất phù hợp với những bạn khả năng Tiếng Anh còn yếu. Đây là blog hay cho các bạn là lập trình viên, các bạn quan tâm có thể đọc nhiều bài viết hay của anh tại vinacode.net

Bài tham khảo khác: 17 Cách để thức dậy sảng khoái vào buổi sáng