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
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, Gauges, ExtDlgs, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Gauge1: TGauge;
BDDI: TOpenPictureDialog;
procedure Image1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TypeRGB = Record
Bleu, Vert, Rouge : Byte;
End;
TypeTRGBArray = Array [0..12000] Of TypeRGB;
TypePRGBArray = ^TypeTRGBArray;
var
PixelsI2:array[0..9000000] of integer;
n,n2:integer;
Form1: TForm1;
implementation
{$R *.dfm}
function Ouvririmg(BDImage:TOpenPictureDialog;Image:Timage):boolean;
var
jpg:Tjpegimage; // variable pr creation jpg(Mettre Jpeg Dans USES)
begin
result:=false; // si cette condition n'est pas bonne ben pas de fonction
if BDImage.Execute then
begin
jpg:=Tjpegimage.Create;
// si jpeg alors petite transfo oblige pr pouvoir la modif
if Uppercase(ExtractFileExt(BDImage.FileName))='.JPG' then // extension
begin
jpg.LoadFromFile(BDImage.FileName); // charge
jpg.PixelFormat:=jf24Bit; // ts aux meme col
image.Picture.Bitmap.Assign(jpg); // on transfert a image1
end;
// si bmp alors facile !
if Uppercase(ExtractFileExt(BDImage.FileName))='.BMP' then
begin
image.Picture.bitmap.LoadFromFile(BDImage.FileName);
image.Picture.Bitmap.PixelFormat:=pf24bit;
end;
jpg.Free;
result:=true;
end;
end;
procedure TForm1.Image1Click(Sender: TObject);
var
Scan : TypePRGBArray;
x,y:integer;
mv,mb,mr: Integer;
begin
if ouvrirImg(BDDI,image1)=true then
begin
gauge1.MaxValue:=image1.Picture.Bitmap.Height-1 ;
n2:=0;
for y:=0 to image1.Picture.Bitmap.Height-1 do
begin
gauge1.Progress:=y;
Scan := image1.picture.Bitmap.ScanLine[Y];
for x:=0 to image1.Picture.Bitmap.Width-1 do
begin
// Valeurs en rouge vert et bleu
mR := Scan[X].Rouge;
mV := Scan[X].Vert;
mB := Scan[X].Bleu;
// Transo en rgb
PixelsI2[n2]:=rgb(mr,mv,mb);
inc(n2);
end;
end;
end;
end;
end. |
Partager