Resim içerisine dosya gömme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Resim içerisine dosya gömme

Mesaj gönderen AliZairov »

İyi geceler. Ben 5 yıl kadar önce bir Resim içerisine dosya gömme işlemini yapan yazılım görmüştüm. Nasıl yapa bilirim?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Resim içerisine dosya gömme

Mesaj gönderen mrmarman »

Senin için google taraması yaptım, incelemek istersen :
bu linkte kişisel dosyaları gizlemek üzerine olanı,
bu linkte de metin gizleme üzerine YouTube videosu var.

Delphi içinden nasıl yaparım diyorsan, önce resim formatları ve yapısal içeriği hakkında bilgi sahibi olman lazım gelir diye değerlendiriyorum. :idea: Gerisi TFileStream veya BlockRead/BlockWrite file işlemi.
Resim
Resim ....Resim
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: Resim içerisine dosya gömme

Mesaj gönderen AliZairov »

Iyi geceler Muharrem abi. Çok teşekkür ederim. Aynen istediğim yazılım. Ben google aradm taradım bulamadım. Sadece cmd kodu ile buldum.

Şöyleymiş kullanımı. Dosyalar C dizine atıyoruz. İsimleri belirliyoruz.

1. Ana resim
2. Ana arşiv
3. Hazır resim

Kod: Tümünü seç

copy /B 1.jpg + 2.rar 3.jpg
Malesef delphide çalışmadı bitürlü.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Resim içerisine dosya gömme

Mesaj gönderen mrmarman »

Bu yazdığın işlem dosyaları art arda binary olarak kopyalamak içindir.

Şöyle yapabilirsin

Kod: Tümünü seç

Uses ShellApi;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  strA, strB, strUrun : TFileName;
begin
  strA    := 'D:\1.jpg';
  strB    := 'D:\2.rar';
  strUrun := 'D:\3.jpg';
  ShellExecute(Handle, 'open', PChar('cmd'), PChar('/c copy /b "'+strA+'" + "'+strB+'" "' + strUrun + '"' ), nil, SW_HIDE);
end;
ama Delphi içinden TFileStream daha verimli olur.

Örnek :

Kod: Tümünü seç

procedure TForm1.BitBtn2Click(Sender: TObject);
Var
  strA, strB, strUrun : TFileName;
  afStream, xfStream  : tFileStream;
begin
  strA    := 'D:\1.jpg';
  strB    := 'D:\2.rar';
  strUrun := 'D:\3.jpg';
  afStream := TFileStream.Create( strUrun, fmCreate );
    xfStream := TFileStream.Create( strA,  fmOpenRead );
      afStream.Seek( 0, soFromEnd );
      afStream.CopyFrom( xfStream, xfStream.Size );
    xfStream.Free;

    xfStream := TFileStream.Create( strB,  fmOpenRead );
      afStream.Seek( 0, soFromEnd );
      afStream.CopyFrom( xfStream, xfStream.Size );
    xfStream.Free;
  afStream.Free;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: Resim içerisine dosya gömme

Mesaj gönderen AliZairov »

Merhaba Muharrem abi. Çok teşekkür ederim nihayet konsol kodları çalıştı bu delphide. Ben kodlara ilave yaptım daha kolay oldu.

Kod: Tümünü seç


// SD isimli SaveDialog bileşenidir.

var
  strA, strB, strUrun : TFileName;
  afStream, xfStream  : tFileStream;
begin
  if A_File.Text = '' then Exit;
  if I_File.Text = '' then Exit;
  SD.Filter := 'JPG Fayl |*.jpg';
  if SD.Execute then
  begin
    strA := I_File.Text;
    strB := A_File.Text;
    strUrun := SD.FileName + '.jpg';
    afStream := TFileStream.Create( strUrun, fmCreate );
    xfStream := TFileStream.Create( strA,  fmOpenRead );
    afStream.Seek( 0, soFromEnd );
    afStream.CopyFrom( xfStream, xfStream.Size );
    xfStream.Free;
    xfStream := TFileStream.Create( strB,  fmOpenRead );
    afStream.Seek( 0, soFromEnd );
    afStream.CopyFrom( xfStream, xfStream.Size );
    xfStream.Free;
    afStream.Free;
    ShowMessage('Hazırdı!');
  end;
end;

Peki Muharrem abi bunun mobil versiyonu yapmak mümkün olmaz her halde. Dediğiniz resim yapısı lazım o zaman.
En son AliZairov tarafından 11 Nis 2015 11:59 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Resim içerisine dosya gömme

Mesaj gönderen mrmarman »

TFileStream olan ikinci tipi denemelisin.

Resim yapısı dediğim, byte byte içine gömmek şeklinde. Aynı karekod gibi resmin pixel değerleriyle binary olarak oynamaktan kasıttı. Bu şekildeki yapıda dosya formatını bilmek gerekmedi.

Dosyaların başında uzunluğuna ilişkin bilgi vardır. Sona eklediğinde bunu geri nasıl okuyorsun oradan çıkart söylemek istediğimi.
Resim
Resim ....Resim
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: Resim içerisine dosya gömme

Mesaj gönderen AliZairov »

Tamam Muharrem abi. Bi araştırayım o zaman.
Cevapla