[DUG] Images and MS SQL Server

Todd Martin todd.martin.nz at gmail.com
Tue Aug 19 13:24:30 NZST 2008


I don't see why not. You probably just need to add 'jpeg' to your "uses" 
clause and
    TPicture.RegisterFileFormat('jpg', 'JPeg Image', TBitmap);
    TPicture.RegisterFileFormat('jpeg', 'JPeg Image', TBitmap);
in the "initialization" section.

You should be able to load a jpeg from stream after that.

Todd.

> Maybe you need to work with BMP - there seem to be behind the scenes
> limitations with what works with JPGs
>
> I wrote a program to resize JPEGS, I found there were some tricks about what
> you could do, it seems in general its less puzzling in Delphi to work with
> BMP but you can easily convert back and forth
>
> You may want to experiment with some code like
>     ImageIn: TImage;
>     ImageOut: TImage;
>
>   JPGIn : TJPegImage;
>   BMPIn : TBitMap;
>   JPGOut : TJPegImage;
>   BMPOut : TBitMap;
>
> //Jpeg in to BMP in order to display or resize
>   JPGIn := TJPegImage.Create;
>   JPGIn.LoadFromFile(FileIn);
>   BMPIn := TBitMap.Create;
>   BMPIn.Assign(JPGIn);
>   ImageIn.Picture.Assign(BMPIn);
>
>
>
> //BMPto JPG
>   JPGOut := TJPegImage.Create;
>   BMPOut := TBitMap.Create;
>   BMPOut.Assign(JPGOut);
>   ImageOut.Picture.Assign(BMPOut);
>
>   JPGOut.Assign(BMPOut);
>
>
> As an aside I found you can resize the BMP with code like
>   JPGOut:=JPGIn;
>   BMPOut.Width:=WidthOut;
>   BMPOut.Height:=HeightOut;
>   BMPOut.Canvas.Stretchdraw(Rect(0,0,WidthOut,HeightOut),JPGOut);
>
> John
>
>
> -----Original Message-----
> From: delphi-bounces at delphi.org.nz [mailto:delphi-bounces at delphi.org.nz] On
> Behalf Of Neven MacEwan
> Sent: Tuesday, 19 August 2008 11:28 a.m.
> To: NZ Borland Developers Group - Delphi List
> Subject: Re: [DUG] Images and MS SQL Server
>
>
> Dave
>   
>> It actually appears to be something to do with the image being a jpeg. 
>> If I use a bitmap image, the TDBImage shows the bitmap correctly.
>>     
> Yes i don't think TDBImage supports JPGs by default
>
> Have you tried datamod.
>
> var
>   ImgField: TBlobField;
> ADOQ.SQL.Text := 'Select * from StockCats where ID ='+InttoStr(ID) ;
> datamod.ADOQ.Open ; try  if not datamod.ADOQ.EOF then
>     begin
>        ID := datamod.ADOQ.FieldByName('ID').AsInteger ;
>        edtCategory.Text :=  
> Trim(datamod.ADOQ.FieldByName('Category').AsString) ;
>        moDescr.Text := 
> Trim(datamod.ADOQ.FieldByName('Description').AsString) ;
>        ms := TMemoryStream.Create ;
>        try
>          ImgField := datamod.ADOQ.FieldByName('Image');
>          ImgField.SaveToStream(ms);
>          Image.Picture.Bitmap.LoadFromStream(ms);
>        finally
>           st.Free ;
>         end ;
>       finally
>         ms.Free ;
>       end ;
>     end ;
>   finally
>     datamod.ADOQ.Close ;
>   end ;
>
>
>
>   
>> -----Original Message-----
>> From: delphi-bounces at delphi.org.nz 
>> [mailto:delphi-bounces at delphi.org.nz]
>> On Behalf Of Neven MacEwan
>> Sent: Tuesday, 19 August 2008 10:18 a.m.
>> To: NZ Borland Developers Group - Delphi List
>> Subject: Re: [DUG] Images and MS SQL Server
>>
>> Dave
>>
>> Im getting a little confused, have you or have you not managed to 
>> write
>> an image to your DB?
>> You could confirm this with a simple sql query or crystal reports
>>
>> If you have you should be able to open the table in the ide and bind a
>> TDBImage to it
>>
>> Neven
>>   
>>     
>>> That's exactly what I am doing to save the image, how do I retrieve
>>>     
>>>       
>> it?
>>   
>>     
>>> Every method I have tried comes up blank.
>>>
>>> -----Original Message-----
>>> From: delphi-bounces at delphi.org.nz
>>>     
>>>       
>> [mailto:delphi-bounces at delphi.org.nz]
>>   
>>     
>>> On Behalf Of Leigh Wanstead
>>> Sent: Monday, 18 August 2008 4:32 p.m.
>>> To: NZ Borland Developers Group - Delphi List
>>> Subject: Re: [DUG] Images and MS SQL Server
>>>
>>> IIRC, I will do this way.
>>>
>>> 	varStream just a memory stream, you might want to instante with a
>>> TFileStream
>>>
>>> 	ADOQueryTest.sql.text := 'UPDATE table SET FileCol = :FileColOBJECTS
>>>       
>
>   
>>> WHERE ID = :ID';
>>> 	...
>>>  
>>> ADOQueryTest.Parameters.ParamByName('FileColOBJECTS').LoadFromStream(
>>> v
>>> arStream, ftBlob);
>>>       ADOQueryTest.ExecSQL;
>>>
>>> Have a nice day
>>>
>>> Regards
>>> Leigh
>>> www.smootharm.com
>>>
>>>
>>> -----Original Message-----
>>> From: delphi-bounces at delphi.org.nz 
>>> [mailto:delphi-bounces at delphi.org.nz]On Behalf Of Dave O'Brien
>>> Sent: Monday, 18 August 2008 4:17 p.m.
>>> To: NZ Borland Developers Group - Delphi List
>>> Subject: Re: [DUG] Images and MS SQL Server
>>>
>>>
>>> So did I, but I can't tell if it's not working because it's not 
>>> saving or loading...
>>>
>>> The problem is FieldByName doesn't have any saveto... methods.
>>>
>>> I have tried to cast it as a Tblobfield 
>>> (TBlobField(adoq.fieldbyname('Image')).Saveto...), but either this 
>>> doesn't work or my save code doesn't work.
>>>
>>> -----Original Message-----
>>> From: delphi-bounces at delphi.org.nz
>>>     
>>>       
>> [mailto:delphi-bounces at delphi.org.nz]
>>   
>>     
>>> On Behalf Of Neven MacEwan
>>> Sent: Monday, 18 August 2008 4:06 p.m.
>>> To: NZ Borland Developers Group - Delphi List
>>> Subject: Re: [DUG] Images and MS SQL Server
>>>
>>> Dave
>>>
>>> I thought you had code to save it?
>>>
>>> To tretrieve it (rough I don't have )
>>>
>>> ADOQuery.SQL.Add('SELECT FileCol FROM Table WHERE ID = 1'); 
>>> ADOQuery.Open; ADOQuery.FieldByName('FileCol ').SaveToFile(FileName);
>>>
>>> FieldByName('FileCol ') should be a TBlobField
>>>
>>> Neven
>>>
>>>
>>>
>>>   
>>>     
>>>       
>>>> I've struck a complete blank on this.
>>>> Can anyone show me some code to save and load images from SQL Server 
>>>> using TADOQuery? The methods I've come up with don't appear to work 
>>>> at all...
>>>>
>>>> -----Original Message-----
>>>> From: delphi-bounces at delphi.org.nz
>>>>     
>>>>       
>>>>         
>>> [mailto:delphi-bounces at delphi.org.nz]
>>>   
>>>     
>>>       
>>>> On Behalf Of Neven MacEwan
>>>> Sent: Friday, 15 August 2008 4:02 p.m.
>>>> To: NZ Borland Developers Group - Delphi List
>>>> Subject: Re: [DUG] Images and MS SQL Server
>>>>
>>>> Dave
>>>>
>>>> Hasn't Tblobfield got the same streaming functions IIRC
>>>>
>>>>     
>>>>       
>>>>         
>>>>> I have worked out how to save an image into an Image field, but I'm 
>>>>> having brain fade on how to retrieve the image... Using TADOQuery,
>>>>>
>>>>>       
>>>>>         
>>>>>           
>>>> D2005.
>>>>
>>>>     
>>>>       
>>>>         
>>>>> Save:
>>>>>
>>>>> ...
>>>>>
>>>>> datamod.ADOU.SQL.Add(':Image)') ;
>>>>>
>>>>> ms := TMemoryStream.Create ;
>>>>>
>>>>> try
>>>>>
>>>>> Image.Picture.Bitmap.SaveToStream(ms);
>>>>>
>>>>> ms.seek(0,0) ;
>>>>>
>>>>> datamod.ADOU.Parameters.ParamByName('Image').LoadFromStream(ms,
>>>>> ftGraphic);
>>>>>
>>>>> finally
>>>>>
>>>>> ms.Free ;
>>>>>
>>>>> end ;
>>>>>
>>>>> datamod.ADOU.ExecSQL ;
>>>>>
>>>>> Anyone (I suppose everyone has) got a way to get the image back?
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Dave.
>>>>>
>>>>>
>>>>>
>>>>>       
>>>>>         
>>>>>           
>> ----------------------------------------------------------------------
>> --
>>   
>>     
>>>   
>>>     
>>>       
>>>>> _______________________________________________
>>>>> NZ Borland Developers Group - Delphi mailing list
>>>>> Post: delphi at delphi.org.nz
>>>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>>>>>
>>>>>       
>>>>>         
>>>>>           
>>>> Subject: unsubscribe
>>>>
>>>> _______________________________________________
>>>> NZ Borland Developers Group - Delphi mailing list
>>>> Post: delphi at delphi.org.nz
>>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>>>>     
>>>>       
>>>>         
>>> Subject:
>>>   
>>>     
>>>       
>>>> unsubscribe
>>>>
>>>> No virus found in this incoming message.
>>>> Checked by AVG - http://www.avg.com
>>>> Version: 8.0.138 / Virus Database: 270.6.4/1616 - Release Date: 
>>>> 16/08/2008 5:12 p.m.
>>>>
>>>> _______________________________________________
>>>> NZ Borland Developers Group - Delphi mailing list
>>>> Post: delphi at delphi.org.nz
>>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>>>>     
>>>>       
>>>>         
>>> Subject: unsubscribe
>>>   
>>>     
>>>       
>>>>     
>>>>       
>>>>         
>>> _______________________________________________
>>> NZ Borland Developers Group - Delphi mailing list
>>> Post: delphi at delphi.org.nz
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>>>     
>>>       
>> Subject:
>>   
>>     
>>> unsubscribe
>>>
>>> No virus found in this incoming message.
>>> Checked by AVG - http://www.avg.com
>>> Version: 8.0.138 / Virus Database: 270.6.4/1617 - Release Date: 
>>> 17/08/2008 12:58 p.m.
>>>
>>> _______________________________________________
>>> NZ Borland Developers Group - Delphi mailing list
>>> Post: delphi at delphi.org.nz
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>>>     
>>>       
>> Subject:
>>   
>>     
>>> unsubscribe
>>>
>>>
>>> _______________________________________________
>>> NZ Borland Developers Group - Delphi mailing list
>>> Post: delphi at delphi.org.nz
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>>>     
>>>       
>> Subject:
>>   
>>     
>>> unsubscribe
>>>
>>> No virus found in this incoming message.
>>> Checked by AVG - http://www.avg.com
>>> Version: 8.0.138 / Virus Database: 270.6.4/1617 - Release Date:
>>> 17/08/2008 12:58 p.m.
>>>
>>> _______________________________________________
>>> NZ Borland Developers Group - Delphi mailing list
>>> Post: delphi at delphi.org.nz
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with
>>>     
>>>       
>> Subject: unsubscribe
>>   
>>     
>>>   
>>>     
>>>       
>> _______________________________________________
>> NZ Borland Developers Group - Delphi mailing list
>> Post: delphi at delphi.org.nz
>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>> Unsubscribe: send an email to delphi-request at delphi.org.nz with 
>> Subject: unsubscribe
>>
>> No virus found in this incoming message.
>> Checked by AVG - http://www.avg.com
>> Version: 8.0.138 / Virus Database: 270.6.5/1619 - Release Date:
>> 18/08/2008 5:39 p.m.
>>
>> _______________________________________________
>> NZ Borland Developers Group - Delphi mailing list
>> Post: delphi at delphi.org.nz
>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>> Unsubscribe: send an email to delphi-request at delphi.org.nz with 
>> Subject: unsubscribe
>>
>>
>>   
>>     
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject:
> unsubscribe
>
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>
>   



More information about the Delphi mailing list