Bất kỳ ai cũng có thể hướng dẫn cách tạo hình ảnh từ văn bản đầu vào. Hình ảnh có thể có bất kỳ phần mở rộng nào không quan trọng.Cách tạo hình ảnh từ văn bản khi đang bay tại thời gian chạy
Trả lời
Ok, giả sử bạn muốn vẽ một chuỗi trên một hình ảnh trong C#, bạn sẽ cần phải sử dụng không gian tên System.Drawing đây:
private Image DrawText(String text, Font font, Color textColor, Color backColor)
{
//first, create a dummy bitmap just to get a graphics object
Image img = new Bitmap(1, 1);
Graphics drawing = Graphics.FromImage(img);
//measure the string to see how big the image needs to be
SizeF textSize = drawing.MeasureString(text, font);
//free up the dummy image and old graphics object
img.Dispose();
drawing.Dispose();
//create a new image of the right size
img = new Bitmap((int) textSize.Width, (int)textSize.Height);
drawing = Graphics.FromImage(img);
//paint the background
drawing.Clear(backColor);
//create a brush for the text
Brush textBrush = new SolidBrush(textColor);
drawing.DrawString(text, font, textBrush, 0, 0);
drawing.Save();
textBrush.Dispose();
drawing.Dispose();
return img;
}
mã này sẽ đo chuỗi đầu tiên, một sau đó tạo một hình ảnh có kích thước chính xác.
Nếu bạn muốn lưu lại hàm này, chỉ cần gọi phương thức Lưu của hình ảnh đã trả về.
Dòng "Hình ảnh img = bitmap mới (0, 0);", không hoạt động: bạn không thể tạo Hình ảnh có kích thước 0. Thay đổi nó thành "bitmap mới (1, 1)", nó hoạt động. – neminem
Nếu bạn thêm 'drawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;' trước 'drawing.DrawString (văn bản, phông chữ, textBrush, 0, 0); dòng', bạn sẽ nhận được văn bản chống răng cưa mượt mà hơn . – LoneBunny
sử dụng imagemagick cho rendering văn bản trên ảnh (trên máy chủ)
Kể từ khi bạn đang ở trong C# bạn cũng có thể sử dụng các lớp Net cho bitmap và font thao tác trực tiếp (với các lớp học như: System.Drawing.Bitmap
và System.Drawing.Graphics
)
Tôi vừa dịch phương pháp này được đề cập trong phương thức này là answer thành phương pháp VB.NET. Có lẽ điều này giúp một ai đó.
Public Function DrawText(ByVal text As String, ByRef font As Font, ByRef textColor As Color, ByRef backColor As Color) As Image
' first, create a dummy bitmap just to get a graphics object
Dim img As Image = New Bitmap(1, 1)
Dim drawing As Graphics = Graphics.FromImage(img)
' measure the string to see how big the image needs to be
Dim textSize As SizeF = drawing.MeasureString(Text, Font)
' free up the dummy image and old graphics object
img.Dispose()
drawing.Dispose()
' create a new image of the right size
img = New Bitmap(CType(textSize.Width, Integer), CType(textSize.Height, Integer))
drawing = Graphics.FromImage(img)
' paint the background
drawing.Clear(BackColor)
' create a brush for the text
Dim textBrush As Brush = New SolidBrush(textColor)
drawing.DrawString(text, font, textBrush, 0, 0)
drawing.Save()
textBrush.Dispose()
drawing.Dispose()
Return img
End Function
Chỉnh sửa: Sửa lỗi chính tả.
Cảm ơn Freddy, bạn đã cứu tôi rất nhiều năng lượng. – BedfordNYGuy
F#
phiên bản:
open System.Drawing
let drawText text font textColor backColor =
let size =
use dummyImg = new Bitmap(1, 1)
use drawing = Graphics.FromImage(dummyImg)
drawing.MeasureString(text, font)
let img = new Bitmap((int size.Width), (int size.Height))
use drawing = Graphics.FromImage(img)
use textBrush = new SolidBrush(textColor)
do
drawing.Clear(backColor)
drawing.DrawString(text, font, textBrush, PointF())
drawing.Save() |> ignore
img
Cảm ơn Kazar. Một chút cải thiện của câu trả lời trước đó để sử dụng USING cho việc xử lý các đối tượng hình ảnh/đồ họa sau khi sử dụng và giới thiệu kích thước tối thiểu param
private Image DrawTextImage(String currencyCode, Font font, Color textColor, Color backColor) {
return DrawTextImage(currencyCode, font, textColor, backColor, Size.Empty);
}
private Image DrawTextImage(String currencyCode, Font font, Color textColor, Color backColor, Size minSize) {
//first, create a dummy bitmap just to get a graphics object
SizeF textSize;
using (Image img = new Bitmap(1, 1)) {
using (Graphics drawing = Graphics.FromImage(img)) {
//measure the string to see how big the image needs to be
textSize = drawing.MeasureString(currencyCode, font);
if (!minSize.IsEmpty) {
textSize.Width = textSize.Width > minSize.Width ? textSize.Width : minSize.Width;
textSize.Height = textSize.Height > minSize.Height ? textSize.Height : minSize.Height;
}
}
}
//create a new image of the right size
Image retImg = new Bitmap((int)textSize.Width, (int)textSize.Height);
using (var drawing = Graphics.FromImage(retImg)) {
//paint the background
drawing.Clear(backColor);
//create a brush for the text
using (Brush textBrush = new SolidBrush(textColor)) {
drawing.DrawString(currencyCode, font, textBrush, 0, 0);
drawing.Save();
}
}
return retImg;
}
- 1. Thêm hình ảnh trong thời gian chạy
- 2. Nén hình ảnh không bị mất khi đang bay
- 3. Tạo tệp RDP khi đang bay
- 4. Android cách tạo hình thu nhỏ thời gian chạy
- 5. Thời gian chạy chương trình đang chạy
- 6. Mẫu văn bản để tạo chuỗi tại thời gian chạy (như Razor hoặc T4)
- 7. Phát hiện nếu qt đang chạy bản dựng gỡ lỗi tại thời gian chạy
- 8. Tạo các nút paypal khi đang bay
- 9. Hình ảnh Thời gian giải mã từ công cụ tạo thời gian của Chrome
- 10. Phân tích cú pháp các tệp văn bản lớn, được sửa đổi khi đang bay
- 11. Đang tải các thuộc tính.Cài đặt từ một tệp khác tại thời gian chạy
- 12. Clojure: Cách tạo hàm tại thời gian chạy
- 13. Chuyển đổi EPS sang PDF khi đang bay với pdflatex khi đang bay
- 14. tài nguyên hình ảnh wpf và thay đổi hình ảnh trong điều khiển wpf tại thời gian chạy
- 15. Dựng hình ảnh tại thời điểm chạy trong WPF
- 16. Tạo tệp javascript khi đang bay trong asp.net mvc
- 17. Đọc văn bản từ một hình ảnh
- 18. Cập nhật kết cấu/hình ảnh Three.js tại thời gian chạy
- 19. Tải phiên bản node.js tại thời gian chạy
- 20. asp.net - Tạo tập tin Powerpoint khi đang bay
- 21. Cách tạo liên kết chứa hình ảnh & văn bản?
- 22. Tải một byte [] vào một Hình ảnh tại Thời gian chạy
- 23. Hình ảnh WPF Tự động thay đổi nguồn hình ảnh trong thời gian chạy
- 24. Cách phát hiện Vùng văn bản từ hình ảnh?
- 25. Chạy PublicResXFileCodeGenerator tại thời gian biên dịch
- 26. Cách tạo findViewById parm động hoặc lập trình tại thời gian chạy
- 27. Android - Thay đổi Nguồn Chế độ xem Hình ảnh tại thời gian chạy sau vài giây
- 28. Thêm hình ảnh vào báo cáo tinh thể tại thời gian chạy
- 29. Thêm hình ảnh png vào hình ảnh trong thời gian chạy bằng Delphi XE
- 30. Thay đổi App.config tại Thời gian chạy
Bạn có nghĩa là một hình ảnh giống như bạn chụp được không? Chắc chắn, * một số * định dạng/tiện ích mở rộng sẽ tốt hơn các định dạng khác. – pavium
Bạn muốn nhập loại văn bản nào? –
Không có ảnh chụp màn hình chúng tôi có hộp văn bản đầu vào và chúng tôi đang sử dụng C# – Ravia