Вывод текста в формате GIF или PNG для использования в электронной книге - PullRequest
0 голосов
/ 26 февраля 2009

Моя цель - создать электронную книгу, которую я могу читать с помощью читателя Mobipocket на моем Blackberry. Проблема в том, что мой текст содержит символы UTF-8, которые не поддерживаются в Blackberry, и поэтому отображаются в виде черных ящиков.

Электронная книга будет содержать список английских и пенджабских слов для справки, например:

bait          ਦਾਣਾ
baked       ਭੁੰਨਿਆ
balance     ਵਿਚਾਰ

Одна мысль, которая у меня была, заключалась в том, чтобы записать список в таблицу HTML с пенджабами, преобразованными в файл GIF или PNG. Затем включите этот HTML-файл в книгу. Все слова в настоящее время существуют в базе данных доступа, но могут быть легко экспортированы в другую форму для ввода в подпрограммы генерации.

ВОПРОС: Используя VB, VBA или C #, как трудно будет написать подпрограмму, создать изображения и затем вывести файл HTML, содержащий английские слова и изображения в таблице

Ответы [ 2 ]

4 голосов
/ 26 февраля 2009

В Python есть простые библиотеки для решения подобных проблем. Однако я не уверен, что существует тривиальное решение VB / C #.

С питоном вы бы использовали библиотеку PIL и код, подобный этому (который я нашел здесь ):

# creates a 50x50 pixel black box with hello world written in white, 8 point Arial text
import Image, ImageDraw, ImageFont

i = Image.new("RGB", (50,50))
d = ImageDraw.Draw(i)
f = ImageFont.truetype("Arial.ttf", 8)
d.text((0,0), "hello world", font=f)
i.save(open("helloworld.png", "wb"), "PNG")

Если вы уже знакомы с другими языками, Python должен быть довольно легко подобран, и в отличие от VB / C # будет работать практически на любой платформе. Python также может помочь вам сгенерировать HTML, чтобы он соответствовал генерируемым изображениям. Вот несколько примеров этого здесь .

2 голосов
/ 26 февраля 2009

Использование VB

Sub createPNG(ByVal pngString As String, ByVal pngName As String)

' Set up Font
Dim pngFont As New Font("Raavi", 14)

' Create a bitmap so we can create the Grapics object 
Dim bm As Bitmap = New Bitmap(1, 1)
Dim gs As Graphics = Graphics.FromImage(bm)

' Measure string.
Dim pngSize As SizeF = gs.MeasureString(pngString, pngFont)

' Resize the bitmap so the width and height of the text 
bm = New Bitmap(Convert.ToInt32(pngSize.Width), Convert.ToInt32(pngSize.Height))

' Render the bitmap 
gs = Graphics.FromImage(bm)
gs.Clear(Color.White)
gs.TextRenderingHint = TextRenderingHint.AntiAlias
gs.DrawString(pngString, pngFont, Brushes.Firebrick, 0, 0)
gs.Flush()


'Saving this as a PNG file
Dim myFileOut As FileStream = New FileStream(pngName + ".png", FileMode.Create)
bm.Save(myFileOut, ImageFormat.Png)
myFileOut.Close()
End Sub
...