Bitmap to Base64

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Bitmap to Base64

Mesaj gönderen gaus »

Hepinize kolay gelsin abilerim ve arkadaşlarım;
Şimdi şöyle büyük bir sıkıntım var;
kamera ile resim çekip bir TImage nesnesine yerleştiriyorum;
kullandığım bir webservisde kaydetmem gereken veriler de resmi, base64 yaparak string şeklinde post etmem isteniyor;
Kısacası bir image içinde ki resmi nasıl base64e çevireceğim:(
tekrar tekrar teşekkürler şimdiden
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Bitmap to Base64

Mesaj gönderen gaus »

Yardim eedecek kimse yok mudur:(
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Bitmap to Base64

Mesaj gönderen gaus »

Kod: Tümünü seç

function Tform1.Base64FromBitmap(Bitmap: TBitmap): string;
var str:TStringStream;
    s:string;
begin
    str:=TStringStream.Create;
    bitmap.SaveToStream(str);
    s:=str.DataString;
    result:=EncodeBase64(s,Length(s));
end;
end.
şu kodu kullanıyorum fakat iki tane sonuç alıyorum;
birincisi direk TStringStream ifadesini bana encodluyo işin içinden çıkamıyorum:(
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Bitmap to Base64

Mesaj gönderen gaus »

Bizi bu forumda takacak kimse yok mi acaba yaa
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Bitmap to Base64

Mesaj gönderen mrmarman »

Sadece vakit meselesi. Lütfen biraz daha sabırlı olun. :alsana:

Kod: Tümünü seç

USES EncdDecd;

Kod: Tümünü seç

function BitmapToBase64(Bitmap: TBitmap): string;
var
  Input : TMemoryStream;
  Output: TStringStream;
begin
  Input := TMemoryStream.Create;
  try
    Bitmap.SaveToStream(Input);
    Input.Position := 0;
    Output := TStringStream.Create('');
    try
      EncdDecd.EncodeStream(Input, Output);
      Result := Output.DataString;
    finally
      Output.Free;
    end;
  finally
    Input.Free;
  end;
end;

Kod: Tümünü seç

function Base64ToBitmap(const base64: string): TBitmap;
var
  Input : TStringStream;
  Output: TMemoryStream;
begin
  Input := TStringStream.Create(base64);
  try
    Output := TMemoryStream.Create;
    try
      EncdDecd.DecodeStream(Input, Output);
      Output.Position := 0;
      Result := TBitmap.Create;
      try
        Result.LoadFromStream(Output);
      except
        Result.Free;
        raise;
      end;
    finally
      Output.Free;
    end;
  finally
    Input.Free;
  end;
end;

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  BMP: TBitmap;
  strDosya : String;
begin
  strDosya := ExtractFilePath(Application.Exename) + 'ornek.bmp';
  BMP := TBitmap.Create;
  BMP.LoadFromFile( strDosya );
  With TStringList.Create do
  begin
    Text := BitmapToBase64( BMP );
    SaveToFile( ChangeFileExt( strDosya, '.TXT' ) );
    Free;
  end;
  BMP.Free;
end;

Kod: Tümünü seç

procedure TForm1.BitBtn2Click(Sender: TObject);
Var
  BMP: TBitmap;
  strDosya : String;
begin
  strDosya := ExtractFilePath(Application.Exename) + 'ornek.txt';
  BMP := TBitmap.Create;
  With TStringList.Create do
  begin
    LoadFromFile( strDosya );
    BMP.Assign( Base64ToBitmap(Text) );
    Free;
  end;
  Image1.AutoSize := True;
  Image1.Picture.Bitmap.Assign(BMP);
  BMP.Free;
end;

Kod: Tümünü seç

Qk02DAAAAAAAADYAAAAoAAAAIAAAACAAAAABABgAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAsrKysrKysLCwr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+v
r6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vr6+vsLCwsrKysrKyAAAA
AAAAsrKy////////////////////////////////////////////////////////////////////
////////////////////////////////////////////srKyAAAAAAAAsLCw/////////v7+/v7+
/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
/v7+/v7+/v7+////////sLCwAAAAAAAAr6+v/////f39/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8
/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/f39////r6+v
AAAAAAAAr6+v/////Pz8+/v7/Pz8/Pz8/f39/f39/f39/f39/f39/f39/f39/Pz8/Pz8/Pz8/Pz8
/Pz8/f39/f39/f39/f39/Pz8/Pz8/Pz8/Pz8+/v7/Pz8////r6+vAAAAAAAAr6+v////+/v7/f39
////////////+fn5////////////////////////////////////////9vb2////////9/f3////
/////////////f39+/v7////r6+vAAAAAAAAr6+v////+/v7////Tk5O////goKChoaGkpKSjo6O
pqamjo6Ojo6Ovb29f39/////T09P////f39/eXl5m5ycjo6O3NzbfHx8////Tk5O////+/v7////
r6+vAAAAAAAAr6+v////+/v7////VFRU////ZWVljIyMaGdn/f39WVlZ5OTkt7e3ioqKfHt7////
VlZW////s7OzuLm5mJeXcXFx7ezsgoKC////VFRU////+/v7////r6+vAAAAAAAAr6+v////+vr4
////VVVV////pKSkp6ensbGxjo6Opqamj4+PkJCQhoaGhISE////V1dX////dnZ2enp6kpKShYWF
0tHRXV1d////VVVV////+vr4////r6+vAAAAAAAAr6+v////+Pn3////VVVV////////////////
+vr6/////f3+////////+/v7////VlZW////////+/z8////////////////////VVVV////+Pn3
////r6+vAAAAAAAAr7Cw////9/b2////VVZW////WVlaWVlZ////UlNT////WlpaWlpa////U1NT
////V1dY////U1NT////WlpaWVlZ////U1NT////VlZW////9/b2////r7CwAAAAAAAAsLCw////
9vX1//7+VldX////YGFhYGFh////V1hY////YGFhYGFh////WFhY////WFhY////WFhY////YGFh
YGFh////V1hY////VldX//7+9vX1////sLCwAAAAAAAAsLCw////9fT0/v39V1dX////YmJiYmJi
////WVlZ////YmJiYmJi////WVlZ////WVlZ////WVlZ////YmJiYmJi////WVlZ////V1dX/v39
9fT0////sLCwAAAAAAAAsLCw////9PPz/fz8V1dX////YmJiYmJi////WVlZ////YmJiYmJi////
WVlZ////WVlZ////WVlZ////YmJiYmJi////WVlZ////V1dX/fz89PPz////sLCwAAAAAAAAsLCw
////8/Lx/Pv6V1dX////YmJjYmJj////WVlZ////YmJjYmJj////WVlZ////WVlZ////WVlZ////
YmJjYmJj////WVlZ////V1dX/Pv68/Lx////sLCwAAAAAAAAsLCw////8fHw+vr5V1dY////Y2Nj
Y2Nj////WVla////Y2NjY2Nj////WVla////WVla////WVla////Y2NjY2Nj////WVla////V1dY
+vr58fHw////sLCwAAAAAAAAsLCw////8PDu+fn4WFhY////Y2NjY2Nj////Wlpa////Y2NjY2Nj
////Wlpa////Wlpa////Wlpa////Y2NjY2Nj////Wlpa////WFhY+fn48PDu////sLCwAAAAAAAA
sLCw////7u7t+Pj3WFhY////Y2NjY2Nj////Wlpa////Y2NjY2Nj////Wlpa////Wlpa////Wlpa
////Y2NjY2Nj////Wlpa////WFhY+Pj37u7t////sLCwAAAAAAAAsLCw////7e3s9/f2WFhY////
Y2NjY2Nj////Wlpa////Y2NjY2Nj////Wlpa////Wlpa////Wlpa////Y2NjY2Nj////Wlpa////
WFhY9/f27e3s////sLCwAAAAAAAAsLCw////7Ovr9vT1WFhY////Y2NjY2Nj////Wlpa////Y2Nj
Y2Nj////Wlpa////Wlpa////Wlpa////Y2NjY2Nj////Wlpa////WFhY9vT17Ovr////sLCwAAAA
AAAAsLCw////6+rq9fPzWFhY////Y2NjY2Nj////Wlpa////Y2NjY2Nj////Wlpa////Wlpa////
Wlpa////Y2NjY2Nj////Wlpa////WFhY9fPz6+rq////sLCwAAAAAAAAsLCw////6unp8/LyWFhY
//7+YmJiYmJi//7+Wlpa//7+YmJiYmJi//7+Wlpa/v39Wlpa/v39Wlpa//7+YmJiYmJi//7+Wlpa
/v39WFhY8/Ly6unp////sLCwAAAAAAAAsLCw////6Ofm7+7tU1NT+fj2WlpbWlpb+fj2VFRV+fj2
WlpbWlpb+fj2VFRV+Pf1VFRV+Pf1VFRV+fj2WlpbWlpb+fj2VFRV+Pf1U1NT7+7t6Ofm////sLCw
AAAAAAAAsLCw////5uXk6uno7ezr7ezr8O/u8O/u7ezr7u3r7ezr8O/u8O/u7ezr7u3r7ezr7u3r
7ezr7u3r7ezr8O/u8O/u7ezr7u3r7ezr7ezr6uno5uXk////sLCwAAAAAAAAsLCw////5OPi5uXk
5+bl5+bl6Ofm6Ofm5+bl5+bl5+bl6Ofm6Ofm5+bl5+bl5+bl5+bl5+bl5+bl5+bl6Ofm6Ofm5+bl
5+bl5+bl5+bl5uXk5OPi////sLCwAAAAAAAAsLCw////4+Lh5eTj5eTj5eTj5eTj5eTj5eTj5eTj
5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj5eTj4+Lh////
sLCwAAAAAAAAsLCw////4uHg4+Lh5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi
5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi5OPi4+Lh4uHg////sLCwAAAAAAAAsLCw////4N/e
4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf4eDf
4eDf4eDf4eDf4eDf4eDf4N/e////sLCwAAAAAAAAsrKy////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////srKyAAAAAAAAsbGxsrKysLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw
sLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsrKysbGxAAAA
Resim
Resim ....Resim
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Bitmap to Base64

Mesaj gönderen gaus »

Muharrem hocam çok sağolun fakt sıkıntım şurada ;
ben Timage ile çalıştığım için onun içindeki resmi bitmape çevirmem gerekiyor dinamik olarak bunu nasıl sağlayabilirm aksi halde fonksiyonu kullanamam;
siz Bitmap dosyasını çağırmışsınız fakat Timage içindeki bitmap değil
ve savetostream fonksiyonu bir tek bitmap ile çalışıyor
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Bitmap to Base64

Mesaj gönderen barisatalay »

TImage nesnesinin içerisinde zaten bitmap vardır.

Örneğin: Image1.Bitmap şeklinde bir denerseniz fark edeceksiniz.
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Bitmap to Base64

Mesaj gönderen gaus »

Hocam kolay gelsin verdiğiniz bilgilerden faydalanarak sonunda hallettim sadece biraz sihir gerekiyor:)
Hocam şimdi şunu yaptım ben image nesnesinin içindeki resim ne olursa olsun çevirebilsin diye genelden gittim;
Fonksiyonuda şu şekilde değiştirdim;

Kod: Tümünü seç

function BitmapToBase64(image:TImage): string;
var
  Input : TMemoryStream;
  Output: TStringStream;
begin
  Input := TMemoryStream.Create;
  try
    image.Picture.Graphic.SaveToStream(Input);
    Input.Position := 0;
    Output := TStringStream.Create('');
    try
      EncdDecd.EncodeStream(Input, Output);
      Result := Output.DataString;
    finally
      Output.Free;
    end;
  finally
    Input.Free;
  end;
end;

Kod: Tümünü seç

image.Picture.Graphic.SaveToStream(Input);
satırı ile bu işi hallettim ama hocam bana ufak bir resimde bile 125 000 kusur karekter veriyor
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Bitmap to Base64

Mesaj gönderen gaus »

barış bey kardeşim öyle olmadı bitmap olmuyo yani isterseniz deneyebilirsniz;
Loadstream ya da savestream fonskiyonlarına ualaşamıyorsunuz
ayrıca barış bey kardeişm kamera çektği fotoğrafı image picture diye mi aktarıyor
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: Bitmap to Base64

Mesaj gönderen barisatalay »

gaus yazdı:barış bey kardeşim öyle olmadı bitmap olmuyo yani isterseniz deneyebilirsniz;
Loadstream ya da savestream fonskiyonlarına ualaşamıyorsunuz
ayrıca barış bey kardeişm kamera çektği fotoğrafı image picture diye mi aktarıyor
Eğer bir Vcl form actıysanız ve TImage nesnesini eklediyseniz Image.bitmap özelliği olmaması gayet normaldir.

Suan emin olmak için yine kontrol ettim.

Bölümümüzün adıda "Firemonkey ve Mobil"dir cevabımıda ona göre vermiştim. :!:
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: Bitmap to Base64

Mesaj gönderen gaus »

Kod: Tümünü seç

image.MultiResBitmap.SaveToStream(Input);
ifadesiyle bunu sağladığımı düşünüyorum direk bitmap dersem olmuyor gerçi şu an kontrol edemiyorum ama vcl de bile bu genel yoldan ulaşmaya çalışıyorum image nesnesinin içindeki ne olursa olsun kabul ediyor o zaman :oops:
Cevapla