[DUG] Images and MS SQL Server

Todd Martin todd.martin.nz at gmail.com
Tue Aug 19 14:26:50 NZST 2008


Oops.

TPicture.RegisterFileFormat is only needed for clx forms/components.

Todd.

> 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
>>
>>   
>>     
>
> _______________________________________________
> 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