Графика в консольном приложении
Модератор: Модераторы
Графика в консольном приложении
Добрый день!
Возникла вот такая задачка: В консольном приложении нарисовать картинку, и сохранить ее в файл jpg/png.
Подозревал что не прокатит, но попробовал.
Создал переменную типа TImage, и с ее помощью нарисовал. Естественно, не собрался модуль.
Линковщик потребовал подцепить регистрацию всего на свете связанного с GUI
В инетах ничего путного не нашел.
Есть, правда, у меня еще один вариант. Когда-то написал класс для рисования картинки в памяти. Ну байтовый массив у меня есть (ну будет). Хоть его в JPG преобразовать.
Знатоки, подскажите чем воспользоваться для решения задачки?
Возникла вот такая задачка: В консольном приложении нарисовать картинку, и сохранить ее в файл jpg/png.
Подозревал что не прокатит, но попробовал.
Создал переменную типа TImage, и с ее помощью нарисовал. Естественно, не собрался модуль.
Линковщик потребовал подцепить регистрацию всего на свете связанного с GUI
В инетах ничего путного не нашел.
Есть, правда, у меня еще один вариант. Когда-то написал класс для рисования картинки в памяти. Ну байтовый массив у меня есть (ну будет). Хоть его в JPG преобразовать.
Знатоки, подскажите чем воспользоваться для решения задачки?
BGRABitmap и Vampyre Imaging должны уметь картинки без виджесета, но не проверял
Спасибо. Попоробую...
Формулировка вашего вопроса размыта. GUI(десктоп) операционной системы доступно или нет? Или ваша задача состоит в том, чтобы не тянуть с собой библиотеки виджетов? =@zub
В Виндовс консоль и так кострирована, хотя помню я видел библиотеку для отображения битмап для Турбо Паскаля.
Если только консоль(терминал) без GUI(десктоп/Х11 Виндов), так тут только Линух/*БСД. Там досупен фрамебуффер и через него можно показывать картинки, видео. Есть готовые программы, которую вы можете вызвать из своей программы.
В Виндовс консоль и так кострирована, хотя помню я видел библиотеку для отображения битмап для Турбо Паскаля.
Если только консоль(терминал) без GUI(десктоп/Х11 Виндов), так тут только Линух/*БСД. Там досупен фрамебуффер и через него можно показывать картинки, видео. Есть готовые программы, которую вы можете вызвать из своей программы.
Ничего показывать не надо. JPG/NPG файл с картинкой создать.
Псевдометод нашел на главном сайте по паскалю.
Код: Выделить всё
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes,
windows, sysutils,
FPimage, FPReadJPEG
;
type
TColorRGB=packed record
case Boolean of
False:(R,G,B,X:Byte;);
True:(RGB:DWORD);
end;
Function FPColorToRGB(Const Color : TFPColor) : TColorRGB;
begin
With Result,Color do
begin
R:=(Red and $FF00) shr 8;
G:=(Green and $FF00) shr 8;
B:=(Blue and $FF00) shr 8;
X:=0;
end;
end;
procedure PaintPicture(AFileName: string; APosX, APosY: integer);
var
LImage: TFPCustomImage;
LWnd: HWND;
LDC: HDC;
LColor: TFPColor;
LWinColor: TColorRGB;
x, y: Integer;
begin
if not FileExists(AFileName) then
exit;
LWnd := GetConsoleWindow;
LDC := GetDC(LWnd);
try
LImage := TFPMemoryImage.create(0,0);
try
LImage.LoadFromFile(AFileName);
for y := 0 to LImage.Height-1 do
for x := 0 to LImage.Width-1 do
begin
LColor := LImage.Colors[x,y];
LWinColor := FPColorToRGB(LColor);
SetPixel(LDC, x,y,LWinColor.RGB);
end;
finally
LImage.Free;
end;
finally
ReleaseDC(LWnd, LDC);
end;
end;
begin
PaintPicture('face.jpg',0,0);
ReadLn;
end.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
vada писал(а):Ничего показывать не надо. JPG/NPG файл с картинкой создать.
Просто надо формулировать вопрос более четко.
Вики на который ссылается @DYUMON. Создание и манипуляция в памяти с примерами.
https://wiki.freepascal.org/fcl-image
На форуме несколько раз уже тема всплывала (Сходу не нашел но точно было )
Зы
Может стоит сделать "мета-тему " (но не обычное ЧАВО ) по всяческим решенным вопросам ?
Зы
Может стоит сделать "мета-тему " (но не обычное ЧАВО ) по всяческим решенным вопросам ?
Последний раз редактировалось Alex2013 09.05.2020 02:12:03, всего редактировалось 2 раза.
О! DYUMON Спасибо!
Все получилось в лучшем виде!
Все получилось в лучшем виде!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
