[DUG] Images and MS SQL Server
John Bird
johnkbird at paradise.net.nz
Tue Aug 19 12:06:40 NZST 2008
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
More information about the Delphi
mailing list