Форум программистов, компьютерный форум CyberForum.ru

Преобразовать текст из *.txt (в любой кодировке) в картинку формата *.bmp - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись звука win 7 одновременно с двух устройств http://www.cyberforum.ru/cpp/thread1231468.html
Добрый день, уважаемые форумчане. Интересует каким образом можно реализовать запись с микрофона и "стерео микшера" в win 7. До нынешнего момента работала следующая конструкция: for(int i=0;i<DEVICES;i++) if(waveInOpen(&WaveHandle, i, &WaveFormat, (DWORD)hwnd, 0, CALLBACK_WINDOW)!=0) debug("bot open"); Но после какого-то момента перестало работать, и второй вызов...
C++ Сломалась программа записи с двух аудиоустройств win 7 Добрый день, уважаемые форумчане. На днях написал программу, которая ведет одновременную запись с двух аудиоустройств в системе win 7. До какого-то момента все работало прекрасно, запись шла в два файла: с микрофона и со стерео микшера(дабы писать, что слышит пользователь из колонок). Во время общения в майл агенте (при этом моя программа успешно работала и записывала) произошел какой-то сбой... http://www.cyberforum.ru/cpp/thread1231294.html
C++ Std::function<>::target() возвращает 0
Привет! Не удовольствия для, а фриланса ради пришлось работать с WinAPI. Всем известно, что это чистый С. Так вот захотел я привязать callback процедуру к объекту и скормить это дело API. std::function<BOOL CALLBACK (HWND, UINT, WPARAM, LPARAM)> proc = std::bind(&dialog::dialogProc, this, _1, _2, _3, _4); DialogBoxIndirect(NULL, (LPDLGTEMPLATE)hgbl, NULL, (DLGPROC)*proc.target<DLGPROC>());...
Что можно выбрать в Visual Studio чтобы написать типа игрового движка или ядра на c++ но не Win32 и с DirectX? C++
для современных Windows. другое не рассматривается Вот допустим решил написать движок для видеоигры на c++ для этого нужны несколько человек и лет но это не важно. именно для наших винд т.е. с DirectX.но в винапи его не советуют. Тогда где??????????? понятнл в компиляторе типа Visual Studio.а какой тип проекта? и вообще если что-то написано на c++ это не значит же что именно выбрали "Проект...
C++ Состояние видео: играет или нет? http://www.cyberforum.ru/cpp/thread1230350.html
Подскажите, пожалуйста, альтернативу этому: if(player.playState = WMPLib.WMPPlayState.wmppsPlaying) { //какой-то код }на С++?
C++ Чтение и поиск с PDF Всем привет! Нужно реализовать чтение и поиск из PDF. (PDF парсинг :D) Кто знает, как можно реализовать? Нашел podofo в гугле, с установкой беда. Заранее Спасибо подробнее

Показать сообщение отдельно
StailGot
27 / 22 / 6
Регистрация: 25.08.2013
Сообщений: 41
23.07.2014, 22:29     Преобразовать текст из *.txt (в любой кодировке) в картинку формата *.bmp
Metaforij, вот пример, выводит текст utf-8 в bmp файл.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <algorithm>
#include <iterator>
#include <fstream>
#include <memory>
#include <string>
#include <sstream>
 
#include <windows.h>
#include <Gdiplus.h>
#pragma comment( lib,"Gdiplus.lib" )
 
using namespace std;
 
int GetEncoderClsid( const WCHAR * format, CLSID * pClsid );
std::unique_ptr<CLSID> GetBMPClsid();
void InitGDI();
 
int main()
{
  namespace gdi = Gdiplus;
 
  ::InitGDI();
 
  const std::wstring TEXT_FILE     = L"A:/file.txt";    // где брать текст
  const std::wstring BMP_SAVE_PATH = L"A:/image.bmp";   // куда сорханять
 
  gdi::Bitmap bmp( 1000, 1000 ); // буфер, куда рисовать
  gdi::Graphics graphics( &bmp ); // графическое устройство, чем рисовать
  gdi::SolidBrush whiteBrush( gdi::Color::White );
  gdi::SolidBrush blackBrush( gdi::Color::Black );
 
  gdi::Font font( L"Arial", 12 );
  gdi::RectF rect( 100, 100, 800, 900 );
 
  std::ifstream text( TEXT_FILE );
 
  std::string string; // читаем файл в одну большую строку
  std::copy( std::istreambuf_iterator<char>( text )
             , std::istreambuf_iterator<char>()
             , std::back_inserter( string ) );
 
  graphics.FillRectangle( &whiteBrush, gdi::Rect { 0, 0, 1000, 1000 } ); // заливка фона белым цветом
 
  gdi::StringFormat format;
  std::unique_ptr<wchar_t []> buf( new wchar_t [string.length()]() );
 
  ::MultiByteToWideChar( CP_UTF8, NULL, string.c_str(), (INT)string.size(), buf.get(), (INT)string.length() );
 
  // рисуем текст
  graphics.DrawString( buf.get(), (INT)string.length(), &font, rect, &format, &blackBrush );
 
  // сохраняем 
  bmp.Save( BMP_SAVE_PATH.c_str(), GetBMPClsid().get() );
  return EXIT_SUCCESS;
}
 
 
 
 
std::unique_ptr<CLSID> GetBMPClsid()
{
  std::unique_ptr<CLSID> bmpClsid( new CLSID );
  ::GetEncoderClsid( L"image/bmp", bmpClsid.get() );
  return bmpClsid;
}
 
 
void InitGDI()
{
  using namespace Gdiplus;
 
  GdiplusStartupInput gdiplusStartupInput;
  ULONG_PTR gdiplusToken;
  GdiplusStartup( &gdiplusToken, &gdiplusStartupInput, NULL );
};
 
 
int GetEncoderClsid( const WCHAR * format, CLSID * pClsid )
{
  using namespace Gdiplus;
 
  UINT  num = 0;          // number of image encoders
  UINT  size = 0;         // size of the image encoder array in bytes
 
  ImageCodecInfo * pImageCodecInfo = NULL;
 
  GetImageEncodersSize( &num, &size );
  if ( size == 0 )
    return -1;  // Failure
 
  pImageCodecInfo = ( ImageCodecInfo *)( malloc( size ) );
  if ( pImageCodecInfo == NULL )
    return -1;  // Failure
 
  GetImageEncoders( num, size, pImageCodecInfo );
 
  for ( UINT j = 0; j < num; ++j )
  {
    if ( wcscmp( pImageCodecInfo [j].MimeType, format ) == 0 )
    {
      *pClsid = pImageCodecInfo [j].Clsid;
      free( pImageCodecInfo );
      return j;  // Success
    }
  }
 
  free( pImageCodecInfo );
  return -1;  // Failure
}
 
Текущее время: 04:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru