JPG Auflösung automatisch herabsetzen

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

JPG Auflösung automatisch herabsetzen

Beitrag von UliTs »

Hallo allerseits,

auf Lieferscheine sollen von den Artikeln erscheinen. Und zwar nicht einfach ein Foto je Artikel hinterlegt werden sondern für jeden Lieferschein ein neues Foto gemacht werden.
Wie mache ich das am geschicktesten?
a) Foto kommt irgendwie als JPG auf den Rechner
b) Foto wird in der Lieferscheintabelle gespeichert

Nun möchte ich nicht gerade 10MB-Fotos dort speichern. Deshalb die Frage:
wenn der Anwender so ein Foto speichern will: wie kann ich das Foto (automatisch) so bearbeiten, dass der Speicherbedarf drastisch sinkt? z.B. von 8000x6000 auf 400x300 Punkte verkleinern?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: JPG Auflösung automatisch herabsetzen

Beitrag von brandelh »

Jimmy hatte mir damals bei meiner Uhr geholfen, da wird ein Bild scaliert GraBitBlt() ist meine ich der Name der Funktion.

Schau mal hier:

:arrow: http://www.xbaseforum.de/viewtopic.php?f=16&t=2556
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: JPG Auflösung automatisch herabsetzen

Beitrag von UliTs »

Danke. Habe mir auf die Schnelle die Funktion angeschaut.
Ich bin mir aber nicht sicher, ob sie nicht nur zur Auswahl eines Ausschnittes dient.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: JPG Auflösung automatisch herabsetzen

Beitrag von brandelh »

Aus dem Gedächtnis meine ich dass Die einen Ausschnitt (oder alles ) in eine neue Größe oder auch verdreht umwandeln kann.
Dann abspeichern. Jimmy hatte auch noch eine Funktion genannt, aber meine Uhr zeigt auch größere Grafiken skaliert an, warum sollte das die nicht auch speichern können.
Gruß
Hubert
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: JPG Auflösung automatisch herabsetzen

Beitrag von peternmb »

So funktioniert es bei mir per Funktion:

Code: Alles auswählen

modJPG("Test_gross.JPG","Test_klein.JPG",100,100)

proc modJPG(orgJPG,neuJPG,breit,hoch)      // = neue Abmessungen
  LOCAL oPSA1 := xbpPresSpace():New():Create(), ;
        oPSA2 := xbpPresSpace():New():Create(), ;
        oBmpA1,oBmpA2, ok:=.F.
  //  
  oBmpA1 := xbpBitmap():New():Create()
  oBmpA1:PresSpace(oPSA1)
  oBmpA1:LoadFile(orgJPG) 
  //
  oBmpA2 := xbpBitmap():New():Create()
  oBmpA2:PresSpace(oPSA2)
  oBmpA2:Make(breit,hoch)
  //
  aS1 := {0,0,oBmpA1:xSize,oBmpA1:ySize}
  aS2 := {0,0,oBmpA2:xSize,oBmpA2:ySize}
  GraBitBlt(oBmpA2:PresSpace(),oBmpA1:PresSpace(),aS2,aS1,,GRA_BLT_BBO_IGNORE,Sleep(0.1))
  //
  if oBmpA2:SaveFile(neuJPG,XBPBMP_FORMAT_JPG,0)  //  Bild-Datei schreiben 
    ok= .T.
  endif
  //       
  oBmpA1:destroy()
  oBmpA2:destroy() 
  //
  oPSA1:destroy()
  oPSA2:destroy()
  //
return
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: JPG Auflösung automatisch herabsetzen

Beitrag von UliTs »

Hallo PeterNmb,

vielen Dank. Das sieht gut aus!

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: JPG Auflösung automatisch herabsetzen

Beitrag von brandelh »

Die Funktion sollte in die Wissensdatenbank :-)

PS: die kratze ich mir auch gleich :-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: JPG Auflösung automatisch herabsetzen

Beitrag von AUGE_OHR »

peternmb hat geschrieben:

Code: Alles auswählen

 GraBitBlt(oBmpA2:PresSpace(),oBmpA1:PresSpace(),aS2,aS1,,GRA_BLT_BBO_IGNORE,Sleep(0.1))
hm ... was soll das SLEEP(0.1) als 7th Parameter in der Function bewirken wenn es nur 6 Parameter gibt ?

die Function von mir heisst übrigens BMP2BMP()
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: JPG Auflösung automatisch herabsetzen

Beitrag von peternmb »

hm ... was soll das SLEEP(0.1) als 7th Parameter in der Function bewirken wenn es nur 6 Parameter gibt ?
die Function von mir heisst übrigens BMP2BMP()
Diese Funktion ist mit Sicherheit hier aus dem Forum, vermutlich von Jimmy.
Ich habe auch die richtige Skalierung für den Beispielcode der Übersichtlichkeit halber weggelassen.
Keine Ahnung mit dem letzten Parameter, läuft bei mir so schon seit einigen Jahren perfekt so.
jbertram
Rookie
Rookie
Beiträge: 11
Registriert: Mo, 02. Okt 2006 17:22
Wohnort: Kelkheim

Re: JPG Auflösung automatisch herabsetzen

Beitrag von jbertram »

sie sleep function als siebter Parameter wartet, [u]bevor[/u] es in die Funktion hineingeht, evt. hat das ja eine Bedeutung
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: JPG Auflösung automatisch herabsetzen

Beitrag von Tom »

Das stimmt. Cool. Die Funktion Time() hat eigentlich nur einen Parameter (<cBaseZone>):

Code: Alles auswählen

? Time('UTC') // 12:49:30
Rufe ich sie mit dem zusätzlichen Parameter "Sleep(200)" auf, erzeugte ich quasi ein implizites Warten:

Code: Alles auswählen

? Time('UTC',Sleep(200)) // 12:49:32
Ich weiß noch nicht, wozu das gut sein könnte, aber es geht. Da Sleep() immer NIL zurückreicht, dürfte es auch kein Problem mit nichtdokumentieren Parametern geben.
Herzlich,
Tom
Antworten