image sql save

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

image sql save

Mesaj gönderen erdogan_ozkaya »

Arkadaşlar,

Delph7 de Aşağıdaki kod ile sql resmi kaydediyorum fakat bmp olduğu için veritabanını şişiriyor
bunun yerine jpg kaydedip, kaydederken de resmi küçültmek istiyorum nasıl yapabilirim acaba ?

Kod: Tümünü seç

procedure TForm1.btn2Click(Sender: TObject);
var
    AStream: TMemoryStream;
begin
            if img1.Picture.Graphic = nil
            then   else
            begin
              AStream := TMemoryStream.Create;
              try
                 img1.Picture.Graphic.SaveToStream(AStream);
                 AStream.Position := 0;
                  PERSONEL_KAYIT.QRY_RESIMLER_DB.Insert;
                  TBlobField(PERSONEL_KAYIT.QRY_RESIMLER_DB.fieldByName('RESIM')).LoadFromStream(AStream);
                  QRY_RESIMLER_DB.Post;
                finally
                AStream.Free;
              end;
     end;
end;

örnekte yapmışlar ama nasıl uyarlayabileceğimi bilemiyorum

Kod: Tümünü seç

procedure TForm1.btn1Click(Sender: TObject);
var
  bmp: TBitmap;
  jpg: TJpegImage;
  scale: Double;
begin
  if opendialog1.execute then
  begin
    jpg := TJpegImage.Create;
    try
      jpg.Loadfromfile(opendialog1.filename);
      if jpg.Height > jpg.Width then
        scale := 50 / jpg.Height
      else
        scale := 50 / jpg.Width;
      bmp := TBitmap.Create;
      try
        {Create thumbnail bitmap, keep pictures aspect ratio}
        bmp.Width := Round(jpg.Width * scale);
        bmp.Height:= Round(jpg.Height * scale);
        bmp.Canvas.StretchDraw(bmp.Canvas.Cliprect, jpg);
        {Draw thumbnail as control}
        Self.Canvas.Draw(100, 10, bmp);
        {Convert back to JPEG and save to file}
        jpg.Assign(bmp);
        jpg.SaveToFile(
          ChangeFileext(opendialog1.filename, '_thumb.JPG')
        );
      finally
        bmp.free;
      end;
    finally
      jpg.free;
    end;
  end;
end;

teşekkürler
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: image sql save

Mesaj gönderen csunguray »

Aşağıdaki tartışmada bu konuyla ilgili bilgiler bulabilirsiniz.

viewtopic.php?f=2&t=6107&start=15
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

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/)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: image sql save

Mesaj gönderen erdogan_ozkaya »

hocam sürekli tblobstream hata veriyor ? uses ne eklemeliyim ?
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: image sql save

Mesaj gönderen erdogan_ozkaya »

tamam ekledim :) DBTables
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: image sql save

Mesaj gönderen erdogan_ozkaya »

invalid class typecast. hatası veriyor

Stream1 := TBlobStream.Create(QRY_RESIMLER_DBRESIM2, bmWrite); // bu satırda

sql 2012 kullanıyorum alan tipi varbinary(max)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: image sql save

Mesaj gönderen erdogan_ozkaya »

aslında resmi kaydetme alakalı sorunum yok aşağıdaki kod ile sorunsuzca kaydediyorum ama kullanıcı bazen yüksek çözünürlükte resim seçiyor küçülterek kaydetmek istiyorum o kadar.

Kod: Tümünü seç

procedure TForm1.btn1Click(Sender: TObject);
Var MS: TMemoryStream;
    J1: TJPEGImage;
begin
  MS := TMemoryStream.Create;
  J1 := TJPEGImage.Create;
  try
   QRY_RESIMLER_DB.Insert;
    Try
      J1.Assign(img1.Picture);
      J1.SaveToStream(MS);
      QRY_RESIMLER_DBRESIM2.LoadFromStream(MS);
      QRY_RESIMLER_DB.Post;
    Except
    End
  finally
    MS.Free;
    J1.Free;
  end
end;
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: image sql save

Mesaj gönderen greenegitim »

Ekteki form işinizi görecektir.
Dosya ekleri
resim_yukleme.zip
(19.2 KiB) 106 kere indirildi
Mücadele güzelleştirir!
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: image sql save

Mesaj gönderen erdogan_ozkaya »

cevabınız için çok teşekkürler,

evet resmi küçültüyor ama daha basit bir hali yokmu bunu ? :) birde bende dosya yok image nesnesine kameradan görüntü aktardığımda oluyor yani eğer sadece dosya olsaydı olurdu.

yinede çok teşekkür ederim :) haala güncel konu


basitce böyle bir kod nasıl yazarım ?

Kod: Tümünü seç

procedure TForm1.btn1Click(Sender: TObject);
Var
    MS: TMemoryStream;
    J1: TJPEGImage;
    KIRP : Double;
begin

  MS := TMemoryStream.Create;
  J1 := TJPEGImage.Create;

  try
   QRY_RESIMLER_DB.Insert;
    Try

     // img1.Height:=100;
     // img1.Width:=100;
      J1.Assign(img1.Picture);
      J1.SaveToStream(MS);


     MS.Height:=100;
     MS.Width:=100;


      QRY_RESIMLER_DBRESIM2.LoadFromStream(MS);
      QRY_RESIMLER_DB.Post;
    Except
    End
  finally
    MS.Free;
    J1.Free;
  end
end;
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: image sql save

Mesaj gönderen greenegitim »

Çekilen resmi temp bir klasöre atıp oradan küçültüp yükleyin.
Mücadele güzelleştirir!
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: image sql save

Mesaj gönderen csunguray »

Aşağıdaki makaleyi inceleyin:

SQL Server Database (Veritabanına) Image (Blob) alana (field'a) jpeg resim yükleme.
viewtopic.php?f=19&t=36237
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

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/)
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: image sql save

Mesaj gönderen erdogan_ozkaya »

deniycem teşekkürler :)
Cevapla