procedure TForm1.Resimal;
var
pano :TClipboard;
begin
pano:=TClipBoard.Create;
if pano.HasFormat(CF_BITMAP) then
image1.Picture.Bitmap.Assign(pano);
pano.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Resim: TMemoryStream;
begin
if not (Image1.Picture.Graphic is TJPEGImage) then
Image1.Picture.Graphic := TJPEGImage.Create;
Resim := TMemoryStream.Create;
try
Image1.Picture.Graphic.SaveToStream(Resim);
IBTable1.Append;
IBTable1ADI.Text :=Edit1.Text;
IBTable1SOYADI.Text :=Edit2.Text;
Resim.Position := 0;
TBlobField(IBTable1.FieldByName('RESIM')).LoadFromStream(Resim);
IBTable1.Post;
IBTransaction1.CommitRetaining;
finally
Resim.Free;
end;
end;
Yukarıdaki kodlar ile hafızaya alınan resmi image1 üzerinde görüntülüyorum. fakat kayıt esnasında kullandığım kodlarda şöyle bir sorun var JPEG uzantılı dosyaları VT'ye kayıt edebilirken bmp yada farklı formattaki resimleri Timage üzerinden kayıt edemiyorum.
Görüntüleme için kullandığım kodlar ise aşağıdaki gibi, Bu alanda sorun yok sadece paylaşmak istedim.
Aslında kaydediyorsun. Ama yüklerken geri yükleyemiyorsun. Çünkü yüklerken resmin her halükarda JPEG olduğunu varsayıyorsun. Bu durumda kaydederken de öncelikle JPEG formatına çevirip kaydedersen iyi olur.
procedure TForm1.StoreJpegImageToBlobField(Image1: TImage; var BlobField1: TBlobField);
var
Stream1: TBlobStream;
Jpeg1: TJpegImage;
begin
try
Stream1 := TBlobStream.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);
end;
end;
end;
finally
Jpeg1.Free;
Stream1.Free;
end;
end;
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
İlginize gerçekten teşekkürler.
Konuyu araştırmadan buraya yazmadım emin olun. 4 yıl önceki bir konuda da Buradaki kodları belirtmişsiniz. viewtopic.php?f=2&t=6107&start=15
Ama malesef istediğim sonucu alabilmiş değilim
Ayrıca Şu alanda da hata vermekte XE5 kullanıyorum.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Vermiş olduğunuz değerli cevaplar için teşekkürler.
@ender_arslanturk
sizin çalışmanızıda inceledim olaya farklı bir bakış açısı getirmşsiniz bu gerçekten çok iyi, sanırım benim seçtiğim resmin boyutundan kaynaklanıyor olacak çözümleyip açması biraz zaman aldı
ilk mesajdada belirttiğim gibi panoda olan bir resmi timagede gösteriyorum ve bunu kaydetmek istiyorum demiştim. aradaki if kontrolünü kaldırdım ve kayıt işlemini direkt yapıyorum şuan içinde soruna çözüm bulmuş durumdayım.