1. Resim eğer BMB formatında ise resmi Jpeg formatına çevirme.
2. Resmi kaliteli bir şekilde büyütüp küçültme (yeniden boyutlandırma, stretch etme). Bu işlem için JCL (Jedi Code Library) kütüphanesindeki JclGraphics unit'i içerisindeki Stretch procedure'ü kullanılmaktadır.
3. TADOBlobStream yoluyla resmi sahaya yükleme.
Kod: Tümünü seç
uses
Jpeg,
JclGraphics;
procedure TForm1.GetJpegImageFromBlobField(var Image1: TImage;
BlobField1: TBlobField);
var
Stream1: TADOBlobStream;
Jpeg1: TJpegImage;
begin
// Resim Aç
if not BlobField1.IsNull then
begin
try
Stream1 := TADOBlobStream.Create(BlobField1, bmRead);
Jpeg1 := TJpegImage.Create;
Jpeg1.LoadFromStream(Stream1);
Image1.Picture.Bitmap.Assign(Jpeg1);
finally
Jpeg1.Free;
Stream1.Free;
end;
end else
begin
Image1.Picture.Graphic := nil;
end;
end;
procedure TForm1.StoreJpegImageToBlobField(Image1: TImage;
var BlobField1: TBlobField; StretchType: Byte; NewWidth,
NewHeight: Word);
const
// Image Stretch Tipleri
stAyniKalsin = 0;
stBuyukseKucult = 1;
stKucukseBuyult = 2;
stHerDurumdaStretch = 3;
var
Stream1: TADOBlobStream;
Jpeg1: TJpegImage;
CompressedImage: TImage;
Oran, OranW, OranH: Real;
begin
// Resim Kaydet
if Image1.Picture.Graphic <> nil then
begin
if (Image1.Picture.Graphic.Width > NewWidth) or (Image1.Picture.Graphic.Height > NewHeight) then
begin
// ShowMessage('Genişlik: '+IntToStr(Image1.Picture.Graphic.Width)+' Yükseklik: '+IntToStr(Image1.Picture.Graphic.Height));
CompressedImage := TImage.Create(Self);
if StretchType = stBuyukseKucult then
begin
if (Image1.Picture.Graphic.Width > NewWidth) or
(Image1.Picture.Graphic.Height > NewHeight) then
begin
OranW := NewWidth / Image1.Picture.Graphic.Width;
OranH := NewHeight / Image1.Picture.Graphic.Height;
if OranW > OranH
then Oran := OranH
else Oran := OranW;
Stretch(Round(Image1.Picture.Graphic.Width * Oran),
Round(Image1.Picture.Graphic.Height * Oran),
rfBell, 1, Image1.Picture.Graphic, CompressedImage.Picture.Bitmap);
Image1.Picture.Bitmap.Assign(CompressedImage.Picture.Bitmap);
end;
end else
begin
if StretchType = stKucukseBuyult then
begin
if (Image1.Picture.Graphic.Width < NewWidth) or
(Image1.Picture.Graphic.Height < NewHeight) then
begin
OranW := NewWidth / Image1.Picture.Graphic.Width;
OranH := NewHeight / Image1.Picture.Graphic.Height;
if OranW > OranH
then Oran := OranH
else Oran := OranW;
Stretch(Round(Image1.Picture.Graphic.Width * Oran),
Round(Image1.Picture.Graphic.Height * Oran),
rfBell, 1, Image1.Picture.Graphic, CompressedImage.Picture.Bitmap);
Image1.Picture.Bitmap.Assign(CompressedImage.Picture.Bitmap);
end;
end else
begin
if StretchType = stHerDurumdaStretch then
begin
OranW := NewWidth / Image1.Picture.Graphic.Width;
OranH := NewHeight / Image1.Picture.Graphic.Height;
if OranW > OranH
then Oran := OranH
else Oran := OranW;
Stretch(Round(Image1.Picture.Graphic.Width * Oran),
Round(Image1.Picture.Graphic.Height * Oran),
rfBell, 1, Image1.Picture.Graphic, CompressedImage.Picture.Bitmap);
Image1.Picture.Bitmap.Assign(CompressedImage.Picture.Bitmap);
end;
end;
end;
CompressedImage.Free;
// ShowMessage('Küçültüldü Genişlik: ' + IntToStr(Image1.Picture.Bitmap.Width) + ' Yükseklik: ' + IntToStr(Image1.Picture.Bitmap.Height));
end;
end;
try
Stream1 := TADOBlobStream.Create(BlobField1, bmWrite);
Jpeg1 := TJpegImage.Create;
if Image1.Picture.Graphic <> nil then
begin
if not Image1.Picture.Graphic.Empty then
begin
if Image1.Picture.Graphic is TJpegImage then
begin
Image1.Picture.Graphic.SaveToStream(Stream1);
// ShowMessage('O bir jpeg. size=' + IntToStr(Stream1.Size));
end else
begin
Jpeg1.Assign(Image1.Picture.Graphic);
Jpeg1.Compress;
Jpeg1.SaveToStream(Stream1);
// ShowMessage('O bir jpeg değil. size=' + IntToStr(Stream1.Size));
end;
end;
end;
finally
Jpeg1.Free;
Stream1.Free;
end;
end;
Database'e (Veritabanına) yazma.
Kod: Tümünü seç
var
BlobField1: TBlobField;
begin
BlobField1 := ADOQuery1.FieldByName('RESIM1') as TBlobField;
Form1.StoreJpegImageToBlobField(TImage1, BlobField1, stBuyukseKucult, 500, 500);
end;
Kod: Tümünü seç
Form1.GetJpegImageFromBlobField(TImage1, ADOQuery1.FieldByName('RESIM1') as TBlobField);
Anahtar kelimeler:
Veritabanına resim ekleme
Jpg ve png resimleri veritabanına kaydetme
Delphiden sql veritabanına resim eklemek
Resim ekleme ve okuma
Dbimage jpg resim kaydetme
Delphi timage kullanarak veritabanına jpeg resim kaydetmek
Delphide bmp resim ekleme - pcnet
Veritabanından resim (image) import / export etmek
Delphi ile sql le resim ekleme access sql server oracle