Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2021, 05:13   #1
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию Как сделать буквы жирными

Здраствуйте, как сделать буквы или цифры или всё вместе на изображении толще или пожирнее ?
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 06:11   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

У шрифта установить шрифт жирный и размер покрупнее.
Код:
 canvas.Font.Style:=[fsBold];
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 15.12.2021, 07:02   #3
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
У шрифта установить шрифт жирный и размер покрупнее.
Код:
 canvas.Font.Style:=[fsBold];
Это не то что я имею ввиду изображение уже содержит буквы или цифры нужно как то обрабатывать например

Из такого:

Сделать такое:
Изображения
Тип файла: bmp 992.bmp (78.2 Кб, 29 просмотров)
Тип файла: bmp 993.bmp (9.8 Кб, 26 просмотров)

Последний раз редактировалось noveek; 15.12.2021 в 07:14.
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 08:30   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Гуглить в сторону dilate фильтра (https://docs.gimp.org/2.10/en/plug-in-dilate.html).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.12.2021, 09:55   #5
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Гуглить в сторону dilate фильтра (https://docs.gimp.org/2.10/en/plug-in-dilate.html).
Нагуглил только одну обработка ну очень долгая даже похоже бесконечная =(

Код:
procedure Dilate(Bitmap:TBitmap;NoNeighbourhood:Integer);
var
X, Y: Integer;
Grayshade: Byte;
x1,y1,x2,y2,i,j :Integer;
begin
for Y:=0 to Bitmap.Height -1 do
for X:=0 to Bitmap.Height -1 do
begin
Grayshade := ColorToRGB(Bitmap.Canvas.Pixels[X, Y]);
if Grayshade = 255 then
begin
Y1:=Y-NoNeighbourhood;
Y2:=Y+NoNeighbourhood;
if Y1 <0 then Y1 :=0;
if Y2>=Bitmap.Height then Y2:=Bitmap.Height;
for i:=Y1 to Y2 do Bitmap.Canvas.Pixels[i, Y] :=
RGB(255,255,255);
end;
end;
X:=0;Y:=0;
with Bitmap do
while Y<=Height - 1 do
begin
X:=0;
while X<=Width - 1 do
begin
Grayshade := ColorToRGB(Canvas.Pixels[X, Y]);
if Grayshade = 255 then
begin
X1:=X-NoNeighbourhood;
X2:=X+NoNeighbourhood;
if X1 <0 then X1 :=0;
if X2>=Width then X2:=Width;
for i:=X1 to X2 do Bitmap.Canvas.Pixels[i, Y] :=RGB(255,255,255);
X:=X+NoNeighbourhood div 2 + 1;
end;
end;
Y:=Y+1;
end;
end;

Последний раз редактировалось noveek; 15.12.2021 в 10:01.
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 12:07   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Не вникал сильно, но похоже, что "бесконечно" заложено в самом алгоритме. Я бы новый рисунок организовывал на новой битмапе, исходную использовал только как источник обсчитываемых точек.
Затея понятна: сделать более чёткой каптчу, чтоб потом её легче было распознавать программно. Я сам их тоже не люблю

Последний раз редактировалось digitalis; 15.12.2021 в 12:11.
digitalis вне форума Ответить с цитированием
Старый 15.12.2021, 13:05   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Сообщение от noveek Посмотреть сообщение
Из такого:
Сделать такое:
Набросал пример:
Код:
procedure BoldPixel(Canvas: TCanvas; x, y: Integer);
const r=3;
begin
  Canvas.Ellipse(x-r, y-r, x+r, y+r);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  bmp1, bmp2: TBitmap;
  x,y: integer;
begin
  bmp1:=TBitmap.Create;
  bmp1.LoadFromFile('992.bmp');
  bmp2 := TBitmap.Create;
  bmp2.Width:=bmp1.Width;
  bmp2.Height:=bmp1.Height;

  with bmp2.Canvas do begin
    Pen.Color := clBlack;
    Brush.Color := clBlack;
    Brush.Style := bsSolid;
  end;

  for x:=0 to bmp1.Width-1 do
    for y:=0 to bmp1.Height-1 do
      if bmp1.Canvas.Pixels[x,y]=clBlack then
        BoldPixel(bmp2.Canvas, x, y);

  bmp1.Free;
  bmp2.SaveToFile('993.bmp');
  bmp2.Free;

  ShowMessage('OK');
end;
Arigato вне форума Ответить с цитированием
Старый 15.12.2021, 19:29   #8
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Не вникал сильно, но похоже, что "бесконечно" заложено в самом алгоритме. Я бы новый рисунок организовывал на новой битмапе, исходную использовал только как источник обсчитываемых точек.
Затея понятна: сделать более чёткой каптчу, чтоб потом её легче было распознавать программно. Я сам их тоже не люблю
Абсолютно точно работа с капчей и ИИ
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 19:40   #9
noveek
Пользователь
 
Регистрация: 26.05.2015
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
procedure BoldPixel(Canvas: TCanvas; x, y: Integer);
const r=3;
begin
Canvas.Ellipse(x-r, y-r, x+r, y+r);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
bmp1, bmp2: TBitmap;
x,y: integer;
begin
bmp1:=TBitmap.Create;
bmp1.LoadFromFile('992.bmp');
bmp2 := TBitmap.Create;
bmp2.Width:=bmp1.Width;
bmp2.Height:=bmp1.Height;

with bmp2.Canvas do begin
Pen.Color := clBlack;
Brush.Color := clBlack;
Brush.Style := bsSolid;
end;

for x:=0 to bmp1.Width-1 do
for y:=0 to bmp1.Height-1 do
if bmp1.Canvas.Pixels[x,y]=clBlack then
BoldPixel(bmp2.Canvas, x, y);

bmp1.Free;
bmp2.SaveToFile('993.bmp');
bmp2.Free;

ShowMessage('OK');
end;
Ерунда какая то и не работает
noveek вне форума Ответить с цитированием
Старый 15.12.2021, 20:15   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от noveek Посмотреть сообщение
не работает
Работает и результирующая картинка очень близка к примеру.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Perl задачи. Перевод буквы в верхний регистр. Как сделать так, чтобы переводил буквы в верхний регистр после точки, восклицательного знака,вопросительного знака? Maxis10 Помощь студентам 0 09.11.2017 01:31
как сделать чтобы из столбца А буквы раскладывались по ячейкам adamant63 Microsoft Office Excel 20 10.04.2016 01:01
Как сделать чтобы при регистрации пароль содержал бы буквы и цифры? erwap PHP 8 08.12.2011 15:54
Как сделать так, чтобы в корректно отображались русские буквы(С) Александр Елис Помощь студентам 0 06.11.2009 19:39
Помогите в строке EXCELя найти цифры и сделать их жирными Wasili4 Microsoft Office Excel 5 17.05.2009 16:21