Преобразование в оттенки серого на Delphi 7
Немного про работу с графикой.
В этом уроке я покажу, как обработать изображение, сделав его черно-белым.
Сначала откроем новый проект.
На форме разместим элемент Image1
В свойстве Picture элемента Image1 выберем какое-нибудь изображение (нажать Load, затем выбрать картинку, нажать Открыть и ОК).
Растянем вставленную картинку до нужного размера.
Затем вставим в форму кнопку Button1
Растянем ее в свойстве Caption напишем "Преобразовать"
Зададим нужные нам переменные
var Form1: TForm1; I1: TImage; DeskTopCanvas: TCanvas; r, g, b, w, h, x, y, rgb, Gscale : integer;
Затем в кнопку Button1 поместим следующий код
procedure TForm1.Button1Click(Sender: TObject); begin I1:=TImage.Create(image1); i1.Picture.Bitmap.Assign(image1.picture.graphic); w:=I1.Picture.Width-1; h:=I1.Picture.Height-1; for x:=1 to w do begin for y:=1 to h do begin rgb:=ColorToRgb(I1.Canvas.Pixels[x,y]); r := getRvalue(rgb); g := getGvalue(rgb); b := getBvalue(rgb); gscale:=round((0.30*GetRValue(rgb))+(0.59*GetGValue(rgb))+(0.11*GetBValue(rgb))); I1.Canvas.Pixels[x,y]:=windows.RGB(GScale,GScale, GScale); end; end; end;
В коде в двойном цикле for по вертикали и горизонтали пиксель за пикселем считывается цвет каждой точки в переменную rgb, затем извлекаются красная, зеленая и синяя составляющие (r,g и b), после чего по формуле вычисляется gscale для точки с оттенком серого.
Дополнительно можно добавит кнопочку "Загрузить" и в ней прописать код для загрузки картинки в форму из файла:
procedure TForm1.Button2Click(Sender: TObject); begin image1.Picture.LoadFromFile('flo.jpg'); end;
Файл будет загружаться из папки с проектом.
И вдогонку можно добавить еще возможность сохранения в файле формата JPG.
В процедуру TForm1.Button1Click добавим переменную
var jpg:TJpegImage;
а в конце допишем следующие пять строчек:
jpg:=TJpegImage.Create; jpg.Assign(image1.picture.graphic); jpg.CompressionQuality:=70; jpg.Compress; jpg.SaveToFile('test.jpg');
Как можно понять, данный код создает jpeg с компрессией 70% и сохраняет его в файл test.jpg в папке с проектом.
В результате получится следующее:
Форма с картинкой и двумя кнопками.
При нажатии кнопки Преобразовать картинка будет преобразовываться в оттенки серого и сохраняться в виде файлов bmp и jpeg.
При нажатии на кнопку "Загрузить" картинка будет возвращаться к исходному состоянию.
Скачать исходники преобразования в оттенки серого для Delphi7
Данный урок размещен в разделе Уроки Delphi7 под номером 3 (урок Простая база данных "ТЕЛЕФОННАЯ КНИЖКА" на Delphi 7 переименован из Урока 3 в Урок 4 )
Надеюсь данный урок будет Вам полезен.