Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Смазывание изображения  (Прочитано 7295 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
gosy.master
Гость
« : 03-02-2010 22:53 » 

Я полный нуп в программировании  Жаль . Но получил задание следующего содержания: Нужно загрузить JPEG в Image, далее нажать на кнопу и изображение должно смазатЬся. Алгоритм смазывания я нашёл. А как его применить, не понимаю, что и где должно быть прописано???  Здесь была моя ладья...  Напишите, пожалуйста, код.

Алгоритм смазывания
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  width = 100;
  height = 60;
  d = 2;
var
  x, y: integer;
  i, j: integer;
  c: integer;
  Pix: array [0..width-1, 0..height-1] of byte;
begin
  randomize;
  with Form1.Canvas do
  begin
    Font.name := 'Arial';
    Font.Size := 30;
    TextOut(d, d, 'Text');
    for y := 0 to height - 1 do
      for x := 0 to width - 1 do
        Pix[x,y] := GetRValue(Pixels[x,y]);
    for y := d to height - d - 1 do
    begin
      for x := d to width - d - 1 do
      begin
        c := 0;
        for i := -d to d do
          for j := -d to d do
            c := c + Pix[x+i,y+j];
        c := round(c / sqr(2 * d + 1));
        Pixels[x,y] := RGB(c, c, c);
      end;
      Application.ProcessMessages;
    end;
  end;
end;

Как его к картинке в Image присобачить привязать???
« Последнее редактирование: 04-02-2010 06:05 от Sel » Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 04-02-2010 13:55 » new

положите TImage на форму, загрузите в него картинку, и вместо Form1.Canvas поставьте Image1.Picture.Bitmap.Canvas
Записан

gosy.master
Гость
« Ответ #2 : 04-02-2010 19:27 » 

Попробовал всё это сделать. Сделал кнопку загрузки в Image и кнопку, который смазывает... после нажатия кнопки, по идее, должно смазать, а картинка вообще пропадает.  Жаль
« Последнее редактирование: 05-02-2010 05:48 от Sel » Записан
zubr
Гость
« Ответ #3 : 06-02-2010 10:32 » 

Попробовал всё это сделать. Сделал кнопку загрузки в Image и кнопку, который смазывает... после нажатия кнопки, по идее, должно смазать, а картинка вообще пропадает.  Жаль
Проблема скорее всего в том, что у тебя картинка не битмап, а другой формат (скорее всего jpg). Если это так то надо преобразовать jpg в bmp. К примеру так:
Код:
  bmp := TBitmap.Create;
  bmp.Assign(Image1.Picture.Graphic);
  with bmp.Canvas do
После всех преобразований подключаем наш временный битмап к Image:
Код:
Image1.Picture.Assign(bmp);
После чего не забываем удалить временный битмап.
Да и убери код:
Код:
   Font.name := 'Arial';
    Font.Size := 30;
    TextOut(d, d, 'Text');
Этот код рисует смазанный текст.
Кстати алгоритм смазывания не очень удачный - он смазывает с потерей цветов.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines