Solved

How to convert string to Bitmap

Posted on 2004-09-27
5
1,570 Views
Last Modified: 2013-12-03
Hi, i want to convert a string (that contains Bitmap-data) to TBitmap, but it doesn't work. here is my code:

var FS: TFileStream;
    bmpdat: string;
    BMP: TBitmap;
begin
 FS := TFileStream.Create('pic.BMP', fmOpenRead);
 SetLength(bmpdat, FS.Size);
 FS.ReadBuffer(Pointer(bmpdat)^, FS.Size);
 FS.Free;

 BMP := TBitmap.Create;
 BMP.Assign(bmpdat); // something wrong here
 Image1.Canvas.Draw(0, 0, BMP);
 BMP.Free;
end;

(yes, i know that i can use TBitmap to read the file, but i want to use TFileStream...!)

help me! :)
0
Comment
Question by:din345
5 Comments
 
LVL 26

Accepted Solution

by:
Russell Libby earned 250 total points
Comment Utility
If you just want to use a filestream, then the following works

var FS: TFileStream;
    bmpdat: string;
    BMP: TBitmap;
begin

  FS:=TFileStream.Create('pic.BMP', fmOpenRead);
  try
     BMP:=TBitmap.Create;
     try
        BMP.LoadFromStream(FS);
        Image1.Canvas.Draw(0, 0, BMP);
     finally
        BMP.Free;
     end;
  finally
     FS.Free;
  end;

end;

---

Regards,
Russell

0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility
If i understand your question correct, you may use something like this

Bitmap Create or Open
//Copy the string with the Canvas Function into the Bitmap
 Canvas.textout(xposition,yposition, String);
Save, Close the Bitmap

Misunderstanding?
0
 
LVL 1

Expert Comment

by:Bart_Thomas
Comment Utility
You want to read a image from stream. That can be done much easier. A TBitmap can't process a string that contains bitmapdata. I don't even know if a string is able to contain this type of data. In essence it is a array of byte. If you really want to use a string, things might get a little more complicated.

This is much easier:

var
  B: TBitmap;
  F: TFileStream;
begin
  B := TBitmap.Create;  
  F := TFileStream.Create ('pic.bmp', fmOpenRead);
  try
    F.Position := 0;
    B.LoadFromStream (F);

    // Use bitmap
    Image1.Canvas.Draw(0, 0, B);  
    finally
      F.Free;
      B.Free;
    end;
 end;
0
 
LVL 33

Expert Comment

by:Slick812
Comment Utility
hello  din345 , , you can use a String to store the Bitmap file as data, but the TBitmap, needs a Stream to load an image from, so you might can use a TStringStream to do that, , like this - -


procedure TForm1.sbut_BmpStrStreamClick(Sender: TObject);
var FS: TFileStream;
    StrStm: TStringStream;
    bmpdat: string;
    BMP1: TBitmap;
begin
 FS := TFileStream.Create('E:\Bmp1.bmp', fmOpenRead);
 SetLength(bmpdat, FS.Size);
 FS.ReadBuffer(Pointer(bmpdat)^, FS.Size);
 FreeAndNil(FS);

 BMP1 := TBitmap.Create;
 StrStm := TStringStream.Create(bmpdat) ; // get string as stream
 BMP1.LoadFromStream(StrStm);
 FreeAndNil(StrStm);
 Image1.Canvas.Draw(0, 0, BMP1);
 FreeAndNil(BMP1);
end;
0
 
LVL 11

Expert Comment

by:ZhaawZ
Comment Utility
why don't you just load that picture, using TBitmap().LoadFromFile(filename) ?

var
  bmp : TBitmap;
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('pic.BMP');
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now