Я хочу создать растровое изображение глифа, чтобы сравнить его со значениями пикселей неизвестных букв в другом изображении.
Я использую Visual Studio 2008, мой проект на C ++, и я использую SFML. Я могу нормально загрузить шрифт из файла ttf, и я попытался сделать что-то вроде:
sf::Font myFont;
myFont.loadFromFile("Path\\arial.ttf");
sf::Texture myTexture = myFont.getTexture(48);
sf::Image textureImage = myTexture.copyToImage();
sf::Glyph myGlyph = myFont.getGlyph(65, 12, false); // get the 'A' glyph
sf::Image glyphImage;
glyphImage.create(myGlyph.bounds.width, myGlyph.bounds.height, sf::Color::White);
glyphImage.copy(textureImage, 0, 0, myGlyph.textureRect);
Я считаю, что это не работает, потому что я просто создаю изображение из той части текстуры, где расположен глиф, а не из значений пикселей самого глифа.
Может кто-нибудь, пожалуйста, помогите?
Это прекрасно работает для меня:
unsigned int size = 20;
sf::Glyph glyph = font.getGlyph('A', size, false);
sf::Texture bitmap = font.getTexture(size);
sf::Image image;
image.create(glyph.bounds.width, glyph.bounds.height);
image.copy(bitmap.copyToImage(), 0, 0, glyph.textureRect);
Обратите внимание, что в этом примере размер символов одинаков, когда getGlyph
а также getTexture
называются, чего не было в вашем коде выше.
Также вместо магического числа вроде 65
использование 'A'
для удобочитаемости.