JPG Auflösung automatisch herabsetzen
Moderator: Moderatoren
-
- 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
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
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
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: JPG Auflösung automatisch herabsetzen
Jimmy hatte mir damals bei meiner Uhr geholfen, da wird ein Bild scaliert GraBitBlt() ist meine ich der Name der Funktion.
Schau mal hier:
http://www.xbaseforum.de/viewtopic.php?f=16&t=2556
Schau mal hier:
http://www.xbaseforum.de/viewtopic.php?f=16&t=2556
Gruß
Hubert
Hubert
-
- 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
Danke. Habe mir auf die Schnelle die Funktion angeschaut.
Ich bin mir aber nicht sicher, ob sie nicht nur zur Auswahl eines Ausschnittes dient.
Ich bin mir aber nicht sicher, ob sie nicht nur zur Auswahl eines Ausschnittes dient.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: JPG Auflösung automatisch herabsetzen
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.
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
Hubert
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: JPG Auflösung automatisch herabsetzen
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
-
- 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
Hallo PeterNmb,
vielen Dank. Das sieht gut aus!
Uli
vielen Dank. Das sieht gut aus!
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: JPG Auflösung automatisch herabsetzen
Die Funktion sollte in die Wissensdatenbank
PS: die kratze ich mir auch gleich
PS: die kratze ich mir auch gleich
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: JPG Auflösung automatisch herabsetzen
hm ... was soll das SLEEP(0.1) als 7th Parameter in der Function bewirken wenn es nur 6 Parameter gibt ?peternmb hat geschrieben:Code: Alles auswählen
GraBitBlt(oBmpA2:PresSpace(),oBmpA1:PresSpace(),aS2,aS1,,GRA_BLT_BBO_IGNORE,Sleep(0.1))
die Function von mir heisst übrigens BMP2BMP()
gruss by OHR
Jimmy
Jimmy
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: JPG Auflösung automatisch herabsetzen
Diese Funktion ist mit Sicherheit hier aus dem Forum, vermutlich von Jimmy.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()
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.
Re: JPG Auflösung automatisch herabsetzen
sie sleep function als siebter Parameter wartet, [u]bevor[/u] es in die Funktion hineingeht, evt. hat das ja eine Bedeutung
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: JPG Auflösung automatisch herabsetzen
Das stimmt. Cool. Die Funktion Time() hat eigentlich nur einen Parameter (<cBaseZone>):
Rufe ich sie mit dem zusätzlichen Parameter "Sleep(200)" auf, erzeugte ich quasi ein implizites Warten:
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.
Code: Alles auswählen
? Time('UTC') // 12:49:30
Code: Alles auswählen
? Time('UTC',Sleep(200)) // 12:49:32
Herzlich,
Tom
Tom