Toon posts:

[Delphi7] jpg in dbimage

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wie kan mij helpen aan een betere manier om JPG's in een DBImage te laden zonder het eerst om te zetten naar BMP.
Ik werk met Delphi7.
Nu zet ik de JPG eerst om naar BMP maar de DB wordt dan zo groot.
Kan niets vinden.

Bedankt!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:26

Janoz

Moderator Devschuur®

!litemod

Sla gewoon de binaire data op in een BLOB.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 27-05 23:27

Creepy

Tactical Espionage Splatterer

En als je probleem is dat je in een DBImage alleen bitmaps kan laden, zet dan eens een "uses jpeg" in de unit waarin je die DBImage gebruikt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Unit JPEG ken ik.
Ik kan wel een JPG omzetten maar het wordt nog steeds als BMP opgeslagen.
Creepy schreef op 05 januari 2004 @ 16:39:
En als je probleem is dat je in een DBImage alleen bitmaps kan laden, zet dan eens een "uses jpeg" in de unit waarin je die DBImage gebruikt.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 27-05 23:27

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 05 januari 2004 @ 16:43:
Unit JPEG ken ik.
Ik kan wel een JPG omzetten maar het wordt nog steeds als BMP opgeslagen.
[...]
Wat is dan precies je probleem? Want een JPEG bestand kan je zonder problemen in een blob in je DB opslaab, zoals Janoz al voorstelt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ik heb geen ervaring met BLOB's, ik begon met GraphicField.
Moet ik dan ook met Streams werken?
Zal eens wat gaan proberen.
Creepy schreef op 05 januari 2004 @ 16:49:
[...]

Wat is dan precies je probleem? Want een JPEG bestand kan je zonder problemen in een blob in je DB opslaab, zoals Janoz al voorstelt.

Verwijderd

Topicstarter
Ik kom er niet uit:
Met onderstaande code lijkt het alsof de Stream wel gevuld wordt want de Image1 is na SaveToStream leeg maar na LoadFromStream blijft Image3 leeg.
Wat doe ik toch fout?!?!


procedure TNAWForm.BitBtn2Click(Sender: TObject);
var TempStream : TStringStream;
begin
TempStream:=TStringStream.Create('');
Image1.Picture.Bitmap.SaveToStream(TempStream);
TempStream.Seek(0,0);
Image3.Picture.Bitmap.LoadFromStream(TempStream);
// MainForm.Table1Foto.LoadFromStream(TempStream);
// ...Als het werkt wordt de foto naar DB geschreven
TempStream.Free;
end;
Verwijderd schreef op 05 januari 2004 @ 17:04:
Ik heb geen ervaring met BLOB's, ik begon met GraphicField.
Moet ik dan ook met Streams werken?
Zal eens wat gaan proberen.


[...]

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 27-05 23:27

Creepy

Tactical Espionage Splatterer

Waarom gebruik je een TStringStream? Een Jpeg bestand (of een bitmap bestand) kan je helemaal niet weergeven als een string. Kijk eens naar de andere TStream varianten, en dan met name de TMemoryStream.

Overigens zet je nu een bitmap in de stream, en niet een originele jpeg. Ook zie ik je nergens iets opslaan? Je save't naar een stream, maar met die stream doe je vervolgens niks?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Zoals Creepy al zegt moet je zelf je stream lezen en schrijven van/naar het veld waar het plaatje in moet komen te staan. Zie TBlobStream/TADOBlobStream.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Ik kom maar niet verder, kun je iets concreter zijn met je advies.
Bedankt!!

Eerst doe ik dit:
procedure TNAWForm.btnFotoToewijzenClick(Sender: TObject);
begin
OpenPictureDialog1.FilterIndex:=2; // .JPG
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Image2.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end;

Daarna dit:
procedure TNAWForm.BitBtn2Click(Sender: TObject);
var TempStream : TMemoryStream;
begin
TempStream:=TMemoryStream.Create;
Image1.Picture.Bitmap.SaveToStream(TempStream); // Laad Image1 in Stream
TempStream.Seek(0,0); // Ga naar begin
Image3.Picture.Bitmap.LoadFromStream(TempStream); // Haal Stream naar Image3
// MainForm.Table1.Edit; // Uiteindelijk, als het werkt,:-(
// MainForm.Table1Foto.LoadFromStream(TempStream); // ...de Stream naar een BLOBField
// MainForm.Table1.Post; // ...in de Table1 wegschrijven.
TempStream.Free;
end;

Maar ik zie niets.
LordLarry schreef op 06 januari 2004 @ 09:45:
Zoals Creepy al zegt moet je zelf je stream lezen en schrijven van/naar het veld waar het plaatje in moet komen te staan. Zie TBlobStream/TADOBlobStream.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 27-05 23:27

Creepy

Tactical Espionage Splatterer

Hint: zet je code tussen code tags [ code ] [/code], dat maakt alles een stuk beter leesbaar.

Je weet zeker dat table1foto een TBlobField is, en ook van het type blob is in je DB? En waarom reset je wel de stream voor het laden van image3, maar niet voor het laden van table1foto?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ja, het is een TBlobField maar zover ben ik nog niet eens.
Natuurlijk moet ik daar ook een Seek doen maar ik krijg de Stream nieteens in een normale Image, laat staan in een Field.
Creepy schreef op 06 januari 2004 @ 10:58:
Hint: zet je code tussen code tags ) [ code ] [/code], dat maakt alles een stuk beter leesbaar.

Je weet zeker dat table1foto een TBlobField is, en ook van het type blob is in je DB? En waarom reset je wel de stream voor het laden van image3, maar niet voor het laden van table1foto?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Jan_Sturre: Programming & Webscripting is een discussieforum over programmeren, niet een persoonlijke helpdesk. Ik krijg uit dit topic nogal onsubtiel de indruk dat je a) geen idee hebt waar je mee bezig bent, b) daar ook weinig interesse in hebt, en c) alleen een kant-en-klare werkende oplossing wilt: dat is dus niet het idee :)

Steek een beetje moeite in je posts, vertel waarom je iets op een bepaalde manier aanpakt, oftewel maak een interessante discussie over je probleem en waarom je het niet snapt. En als je hier code neerzet zet er dan even [code=delphi]-tags omheen :Y)

Professionele website nodig?


Verwijderd

Topicstarter
Bedankt voor je motiverende reactie, is iedereen niet onderaan begonnen?
Ik zoek wel iemand die me echt wil helpen!
curry684 schreef op 06 januari 2004 @ 11:24:
Jan_Sturre: Programming & Webscripting is een discussieforum over programmeren, niet een persoonlijke helpdesk. Ik krijg uit dit topic nogal onsubtiel de indruk dat je a) geen idee hebt waar je mee bezig bent, b) daar ook weinig interesse in hebt, en c) alleen een kant-en-klare werkende oplossing wilt: dat is dus niet het idee :)

Steek een beetje moeite in je posts, vertel waarom je iets op een bepaalde manier aanpakt, oftewel maak een interessante discussie over je probleem en waarom je het niet snapt. En als je hier code neerzet zet er dan even [code=delphi]-tags omheen :Y)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 06 januari 2004 @ 11:41:
Bedankt voor je motiverende reactie, is iedereen niet onderaan begonnen?
Ik zoek wel iemand die me echt wil helpen!
We willen je best helpen, maar we willen niet je code schrijven: daar heb jij niets aan en daar hebben wij niets aan.

In ieder geval ben ik blij dat je mijn post als motiverend beschouwt, echte kennis van programmeren is niet het kunnen opdreunen van gekopieerde code maar het verkrijgen van inzicht waardoor je het de volgende keer zelf kunt schrijven. Iemand die je 'echt wil helpen' en je code voor je schrijft zorgt er enkel voor dat je volgende week hetzelfde probleem hebt.

give a man a fish and he can eat a day, teach him how to fish and he can eat a lifetime

[ Voor 8% gewijzigd door curry684 op 06-01-2004 11:47 ]

Professionele website nodig?


  • Looki
  • Registratie: Maart 2002
  • Laatst online: 04-03 14:43

Looki

Als je zoekt dan zul je vinden

Zo ik kijk naar de tijden die hij erin steekt (zie post tijden) en hoe de vraag is opgebouwt, denk ik dat dit een reele vraag is.
Hij komt ergens niet uit, alleen weet niet waar het probleem ligt.

Tis dat ik een Dalphi kan, maar ik kan me voorstellen dat als je er een tijd achter zit en de code die je gemaakt hebt werkt niet.

Ik heb zelf ook even zitten zoeken naar informatie, maar er is niet echt nuttige informatie over te vinden.

Houd het forum dus ook voor beginners!

Hieronder had ik iets leuks kunnen neerzetten... Maar waarom mensen hiermee vervelen....


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 27-05 23:27

Creepy

Tactical Espionage Splatterer

Looki schreef op 07 januari 2004 @ 10:09:
Zo ik kijk naar de tijden die hij erin steekt (zie post tijden) en hoe de vraag is opgebouwt, denk ik dat dit een reele vraag is.
Hij komt ergens niet uit, alleen weet niet waar het probleem ligt.

Tis dat ik een Dalphi kan, maar ik kan me voorstellen dat als je er een tijd achter zit en de code die je gemaakt hebt werkt niet.

Ik heb zelf ook even zitten zoeken naar informatie, maar er is niet echt nuttige informatie over te vinden.

Houd het forum dus ook voor beginners!
Er is dus genoeg nuttige informatie over streams te vinden. Ook over images. Er zijn namelijk genoeg Delphi sites, boeken, en een flink gevulde helpfile.

Tuurlijk is het irritant dat als je ergens een avond mee bezig bent en het wil maar niet lukken. Maar dat betekent niet dat het hier de bedoeling is om maar een zooi code neer te gooien zodat dat domweg gekopieerd kan worden. Daar leert namelijk niemand wat van. Overigens is een avondje met een probleem zitten nog niet eens zo heel lang. ;)

Anyway, lukt het al om van de ene image naar de andere te streamen?

Waarschijnlijk heb je het jpeg bestand nog los op disk staan ook? Probeer die eens in een TFileStream in te lezen en dit te streamen naar een TImage, of rechtstreeks naar je DB.

Overigens heeft een TPicture ook een assign method. Let er trouwens op dat als je een jpeg laadt in een TImage, je de picture.BitMap niet kan gebruiken, tenzij je de Jpeg laat omzetten naar een bitmap. Waarschijnlijk kan je de picture van je normale image zo toekennen aan de picture van je DBImage.

[ Voor 11% gewijzigd door Creepy op 07-01-2004 10:49 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Looki schreef op 07 januari 2004 @ 10:09:
Zo ik kijk naar de tijden die hij erin steekt (zie post tijden) en hoe de vraag is opgebouwt, denk ik dat dit een reele vraag is.
Ik heb op de vraag inhoudelijk niets tegen, ik vraag alleen:
curry684 schreef op 06 januari 2004 @ 11:24:
Steek een beetje moeite in je posts, vertel waarom je iets op een bepaalde manier aanpakt, oftewel maak een interessante discussie over je probleem en waarom je het niet snapt. En als je hier code neerzet zet er dan even [code=delphi]-tags omheen :Y)
Dat is een minimale eis die we stellen om het niveau en de inhoudelijke kwaliteit van P&W op peil te houden.
Houd het forum dus ook voor beginners!
Helaasch, leest u even http://gathering.tweakers.net/forum/faq mee: "Gathering of Tweakers is géén helpdesk waar je al je huis-, tuin-, en keukenprobleempjes kwijt kunt, maar een forum voor en door de serieuze hobbyist. We verwachten dat je zelf moeite doet voordat je bij ons aanklopt, je dit in je topicstart duidelijk laat merken en dat je respect toont voor de andere gebruikers en het forum. Doe dus zelf research en laat duidelijk merken dat je dat gedaan hebt. Lijkt Gathering of Tweakers je te hoog gegrepen, dan is BeginnersWeb een mooi en goed alternatief."

Professionele website nodig?


Verwijderd

Verwijderd schreef op 05 januari 2004 @ 16:22:
Wie kan mij helpen aan een betere manier om JPG's in een DBImage te laden zonder het eerst om te zetten naar BMP.
Ik werk met Delphi7.
Nu zet ik de JPG eerst om naar BMP maar de DB wordt dan zo groot.
Kan niets vinden.

Bedankt!
Neem eens een kijkje op http://www.cleys.com/delphi/Blob_Test.zip
Pagina: 1