delphi4arab منتديات دلفي للعرب
تحويل صورة إلى نص - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : تحويل صورة إلى نص (/showthread.php?tid=6725)



تحويل صورة إلى نص - tahasit - 24-01-2015

ما نوع هذا النص .؟
وكيف يمكن تحويل صورة إلى نص على هذا الشكل
لقد حاولت أن اقوم بتحويل الصورة إلى نص ولكن النتيجة كانت على هذا الشكل :

PHP كود :
‰PNG

   
IHDR   1   
&   â-نh   sRGB ®خé   gAMA  ±ڈüa    cHRM  z&  €„  ْ   €è  u0  ê`  :ک  pœ؛Q<   ‚IDATXGيکر
€ يے?ْ²|3ءI®éqل¶i¯Sڈˆ(ظVُ”m•l†®ï¦'D*çTjâ—Tچ‰¶yZ{µغ´‍¦ًنؤ:GNrjْكل´إ†َd‍جس›M‹}اhةINî}ةTvےl³“*P‘ô<5أ<پjغ%ق«0ؤrْ.§[ً±ڑ
$س    IEND®B`‚ 

والمثال في المرفقات


تحويل صورة إلى نص - tahasit - 24-01-2015

ربما لم يكن سؤالي واضح
كيف يمكن تحويل الصورة إلى نص كما في الصورة التالية :
كود :
http://www5.0zz0.com/2015/01/24/20/422098075.jpg

والمثال مرفق في المشاركة الاولى وجزاكم الله عنا خير الجزاء


تحويل صورة إلى نص - onexite - 25-01-2015

اضن الكود مشفر ب base64


PHP كود :
const
  
Codes64 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/';

function 
Encode64(S: string): string;
var
  
i: Integer;
  
a: Integer;
  
x: Integer;
  
b: Integer;
begin
  Result 
:= '';
  
a := 0;
  
b := 0;
  for 
i := 1 to Length(s) do
  
begin
    x 
:= Ord(s[i]);
    
b := b * 256 + x;
    
a := a + 8;
    while 
a >= 6 do
    
begin
      a 
:= a - 6;
      
x := b div (1 shl a);
      
b := b mod (1 shl a);
      
Result := Result + Codes64[x + 1];
    
end;
  
end;
  if 
a > 0 then
  begin
    x 
:= b shl (6 - a);
    
Result := Result + Codes64[x + 1];
  
end;
end;

function 
Decode64(S: string): string;
var
  
i: Integer;
  
a: Integer;
  
x: Integer;
  
b: Integer;
begin
  Result 
:= '';
  
a := 0;
  
b := 0;
  for 
i := 1 to Length(s) do
  
begin
    x 
:= Pos(s[i], codes64) - 1;
    if 
x >= 0 then
    begin
      b 
:= b * 64 + x;
      
a := a + 6;
      if 
a >= 8 then
      begin
        a 
:= a - 8;
        
x := b shr a;
        
b := b mod (1 shl a);
        
x := x mod 256;
        
Result := Result + chr(x);
      
end;
    
end
    
else
      Exit;
  
end;
end;

 Function 
mFileToStr(Ruta: string): string;
var
sFile: HFile;
uBytes: Cardinal;
begin
sFile
:= _lopen(PChar(Ruta), OF_READ);
uBytes:= GetFileSize(sFile, nil);
SetLength(Result, uBytes);
_lread(sfile, @result[1], uBytes);
_lclose(sFile);
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if not OpenPictureDialog1.Execute then  Exit;
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
memo1.text:=Encode64(mFileToStr(OpenPictureDialog1.FileName)) ;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close 
;
end;


end. 



تحويل صورة إلى نص - محمد عبد العزيز - 25-01-2015

السلام عليكم
يمكن استخدام Base64 أو UUE/XXE/MIME/...
لم تذكر الهدف من التحويل الى نص ؟ لتخزينها بقياعدة بيانات ؟



تحويل صورة إلى نص - tahasit - 25-01-2015

السلام عليكم ورحمة الله تعالى وبركاته
هذا هو حل المشكل أخي الكريم onexite بارك الله فيك
من خلال هذا الكود نستطيع تخزين ملفاتنا مشفرة في قاعدة المعطيات
أخي الكريم B.M.AbdelAziZ الهدف من تحويل الملف إلى نص هو من أجل تخزينها في ملف xml
والمثال في المرفقات
شكرا مرة أخرى


تحويل صورة إلى نص - tahasit - 25-01-2015

بقي لي مشكل واحد في تخزين المعلومات في ملف xml وهو ظهور اللغة العربية على شكل رموز غريبة
وهذا يحدث إن نقلت القيم من قاعدة معطيات (mysql) مثل :
AddChild('Nom').Text := MyQueryNom.value ;
أما ان كتبت النص مباشرة مثل
AddChild('Nom').Text := 'محمد';
فإن المشكل لا يظهر


تحويل صورة إلى نص - onexite - 25-01-2015

لا اضن هذا حل مناسب
عليك بنسخ الصورة الى مجلد البرنامج وحفظ مسار الصورة فقط وان استلزم الامر قم بتشفير الصور


تحويل صورة إلى نص - tahasit - 26-01-2015

السلام عليكم
نعم أخي الكريم أنا لا أستعملها كقاعدة معطيات دائمة من أجل حفظ الصور وإنما كملف حفظ مؤقت من اجل الطباعة فقط ثم يتم حذف الملف

ولكن بقي لي مشكل واحد وهو ظهور اللغة العربية على شكل رموز غريبة في ملف XML

عندما أضع هذا الكود :
كود :
XMLdoc.ChildNodes.Clear; XMLdoc.Version := '1.0'; XMLdoc.Encoding := 'UTF-8'; XMLDoc.StandAlone := 'yes'; with XMLdoc.AddChild('cardObject') do begin AddChild('Nom').Text := Table1Nom.Value ; AddChild('Prenom').Text := Table1Prenom.Value ; AddChild('Adresse').Text := 'الجزائر' ; AddChild('photo').Text := Memo1.Text ; end; XMLdoc.SaveToFile('File1.xml') ;

فإن النتيجة تكون هكذا
كود :
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> - <cardObject> [color=Red] <Nom>محمد</Nom> [/color] [color=red] <Prenom>حسان</Prenom> [/color] [color=Lime]<Adresse>الجزائر</Adresse>[/color] <photo>Memo1</photo> </cardObject>
فما هو الحل بارك الله فيكم والمثال في المرفقات


تحويل صورة إلى نص - S.FATEH - 26-01-2015

السلام عليكم لماذا لا تستخدم AsString بدل من Value


تحويل صورة إلى نص - tahasit - 27-01-2015

السلام عليكم ورحمة الله تعالى وبركاته
اخي الكريم لقد جربت AsString وAsVariant ولم ينجح الامر
لكن نجح معي حل واحد وان كان مؤقت وهو تحويل إعدادات اللغة والمنطقة في لوحة التحكم إلى العربية حيث تظهر اللغة العربية سليمة في ملف xml
بارك الله في الجمبع