Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 24.06.2007, 19:29 Titel: JPG anzeigen, und auf größe vom SCREEN skalieren.... |
|
|
.... und das möglichst schnell
es geht darum, dass ich einen kleinen bildviewer für meine schwester schreiben soll.
verfügbare daten: größe vom screen(1024x768), dateiname
das ganze sollte das bild prozentual strecken, also ohne verzerrung vom bild. _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
Verfasst am: 24.06.2007, 20:01 Titel: |
|
|
Hallo,
Anstelle von dem JPG-Loader kannst du auch PLOAD verwenden -> Klick
MultiPut bekommst du hier her: (Klick)
Die Parameter sind eigentlich selbsterklärend:
MultiPut[DES],[x],[y],SRC,[xScale],[yScale],[Rotate],[Trans]
Soweit so gut. Nachdem du eine JPG-Datei in einem Buffergeladen hast, musst du nun an die Höhe/Breite kommen, um die später dementsprechend das dargestellte Bild zu strecken.
FB <= 0.17b:
Code: | w = cptr(Short Ptr, buffer)[0] Shr 3
h = cptr(Short Ptr, buffer)[1] |
FB CVS:
Code: | w = cptr(Uinteger Ptr, img)[2]
h = cptr(Uinteger Ptr, img)[3] |
Damit dürftest du nun imstande sein, die neue Höhe/Breite zu berechnen und diese berechneten Werte einfach an die Funktion Multiput samt den gelesenen Buffer zu schicken. _________________ +++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 24.06.2007, 21:01 Titel: |
|
|
hmm
scheiße
Code: |
'*******************************************************************************
'********************************JPG-Viewer*************************************
'*******************************************************************************
#include "freeimage.bi"
#include "crt.bi"
#include "fbgfx.bi"
Declare Function GetJpeg(Byval File As String) As Any Ptr
Dim Image As Any Ptr
Dim File1 as integer = 0804
dim File2 as integer = 0810
dim Filename as string
dim vors as string = ".JPG"
dim count as integer
dim puffer as string * 1
dim alt as string
ScreenRes 1024, 768, 32
count = File1
do until multikey(SC_ESCAPE) = -1
sleep 500
puffer = inkey
if count = File2 then
count = File1
end if
if multikey(sc_1) then
count = count - 1
else
count = count
end if
if multikey(sc_2) then
count = count + 1
else
count = count
end if
alt = Filename
Filename = "CIMG" + trim(str(count)) + vors
Filename = "CIMG" + trim(str(count)) + vors
Image = GetJpeg(Filename)
If Image Then
Put (1, 1), Image
Else
Print "File not found, Filename:" + Filename
End If
loop
end
Function GetJpeg(Byval File As String) As Any Ptr
Dim Dib As FIBITMAP Ptr
Dim Dib32 As FIBITMAP Ptr
Dim SprWidth As Integer
Dim SprHeight As Integer
Dim Sprite As Any Ptr
Dim Bits As Any Ptr
Dib = FreeImage_Load(FIF_JPEG, File, JPEG_DEFAULT)
If Dib = 0 Then Return 0
FreeImage_FlipVertical Dib
Dib32 = FreeImage_ConvertTo32Bits(Dib)
Dib32 = FreeImage_Rescale (Dib32, 1024, 768, 0)
SprWidth = FreeImage_GetWidth(Dib32)
SprHeight = FreeImage_GetHeight(Dib32)
Sprite = ImageCreate(SprWidth, SprHeight)
Bits = FreeImage_GetBits(Dib32)
MemCpy CPtr(Zstring Ptr, Sprite) + 4, Bits, SprWidth * SprHeight * 4
FreeImage_Unload(Dib32)
FreeImage_Unload(Dib)
Return Sprite
End Function
|
die datei ist da, der ausgegeben string stimmt damit überein *g*
und trotzdem kommt File not found  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 24.06.2007, 21:23 Titel: |
|
|
die Suchfunktion hat das hier gefunden _________________
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 24.06.2007, 21:25 Titel: |
|
|
öhhm
ein großteil des codes kommt aus diesem thread, habe beim 2-edit auch drauf hingewiesen , naja egal, neuer code, vll. findet jemand mein denkfehler
Code: |
'*******************************************************************************
'********************************JPG-Viewer*************************************
'*******************************************************************************
#include "freeimage.bi"
#include "crt.bi"
#include "fbgfx.bi"
Declare Function GetJpeg(Byval File As String) As Any Ptr
Dim Image As Any Ptr
Dim File1 as integer = 0804
dim File2 as integer = 5622
dim Filename as string
dim vors as string = ".JPG"
dim count as integer
dim puffer as string * 1
dim alt as string
screen 20, 32
count = File1
do until multikey(SC_ESCAPE) = -1
sleep 50
puffer = inkey
do: sleep 10: puffer = inkey: loop until puffer <> inkey
if multikey(sc_left) then
count = count - 1
end if
if multikey(sc_right) then
count = count + 1
end if
if count = File2 then
count = File1
end if
if count < File1 then
count = File1
end if
'alt = Filename
'Filename = trim("CIMG" + trim(str(count)) + vors)
Filename = "CIMG" + trim(str(count)) + vors
Image = GetJpeg(Filename)
If Image Then
Put (0,0),Image
Else
Print "File not found, Filename:" + Filename
End If
loop
end
'die funktion blieb gleich
|
/€dit:
Code: | Dib = FreeImage_Load(FIF_JPEG, File, JPEG_DEFAULT)
If Dib = 0 Then Return 0 |
die funktion gibt 0 zurück *g* anscheinend kann freeimage die datei net verarbeiten  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 24.06.2007, 22:32 Titel: |
|
|
Prob gelöst. Die führende null wurde entfernt
src:
Code: |
'*******************************************************************************
'********************************JPG-Viewer*************************************
'*******************************************************************************
#include "inc/freeimage.bi"
#include "inc/crt.bi"
#define SC_LEFT &h4B
#define SC_RIGHT &h4D
#define SC_ESCAPE &h01
Declare Function GetJpeg(Byval File As String) As Any Ptr
Dim Image As Any Ptr
Dim File1 as integer = 804 ' Erste Nummer
dim File2 as integer = 5622 ' Letzte Nummer
dim Filename as string 'TString
dim vors as string = ".JPG" ' Endung
dim count as integer
dim puffer as string * 1 'tast-puffer
screen 20, 32 '1024x768x32
count = File1
do until multikey(SC_ESCAPE) = -1
sleep 50
puffer = inkey
do: sleep 10: puffer = inkey: loop until puffer <> inkey
if multikey(sc_left) then
count = count - 1
end if
if multikey(sc_right) then
count = count + 1
end if
if count = File2 then
count = File1
end if
if count < File1 then
count = File1
end if
if count < 1000 then
Filename = "CIMG0" + trim(str(count)) + vors
else
Filename = "CIMG" + trim(str(count)) + vors
end if
screenlock
cls
Image = GetJpeg(Filename)
If Image Then
Put (0,0),Image
Else
Print "File not found (Error Nr." + str(Image) + ", Filename:" + Filename
End If
screenunlock
loop
end
Function GetJpeg(Byval File As String) As Any Ptr
Dim Dib As FIBITMAP Ptr
Dim Dib32 As FIBITMAP Ptr
Dim SprWidth As Integer
Dim SprHeight As Integer
Dim Sprite As Any Ptr
Dim Bits As Any Ptr
Dib = FreeImage_Load(FIF_JPEG, File, JPEG_DEFAULT)
If Dib = 0 Then Return 0
FreeImage_FlipVertical Dib
Dib32 = FreeImage_ConvertTo32Bits(Dib)
Dib32 = FreeImage_Rescale (Dib32, 1024, 768, 0)
SprWidth = FreeImage_GetWidth(Dib32)
SprHeight = FreeImage_GetHeight(Dib32)
Sprite = ImageCreate(SprWidth, SprHeight)
Bits = FreeImage_GetBits(Dib32)
MemCpy CPtr(Zstring Ptr, Sprite) + 4, Bits, SprWidth * SprHeight * 4
FreeImage_Unload(Dib32)
FreeImage_Unload(Dib)
Return Sprite
End Function
|
Nun auch auf meiner Homepage zu finden . _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.06.2007, 18:05 Titel: |
|
|
kleiner tipp: nicht jeder traut selbstenpackenden zip-archiven.
jaja, nun mein standardspruch: das ist außerdem mit kanonen auf spatzen geschossen Denk doch mal an linux- oder sonstwas-user, die können vlt archive öffnen, aber keine EXEn ausführen...  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 25.06.2007, 21:44 Titel: |
|
|
Jojo hat Folgendes geschrieben: | kleiner tipp: nicht jeder traut selbstenpackenden zip-archiven.
jaja, nun mein standardspruch: das ist außerdem mit kanonen auf spatzen geschossen Denk doch mal an linux- oder sonstwas-user, die können vlt archive öffnen, aber keine EXEn ausführen...  |
ahh danke für den hinweis auch wenn (meiner meinung nach) wine zur "standard"-ausrüstung gehört ....
werde ich mal nach normalen ZIP ändern
/€dit:
geändert  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.06.2007, 22:06 Titel: |
|
|
Würdest du es toll finden, wenn du jedes mal den WinUAE starten musst, nur weil du ein Amiga-Archiv entpacken willst? Ich fände es definitiv schrecklich.
und es gibt nunmal auch OSX, und das hat KEIN wine... und DOS erst recht nicht. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4700 Wohnort: ~/
|
Verfasst am: 25.06.2007, 22:18 Titel: |
|
|
csderats hat Folgendes geschrieben: | auch wenn (meiner meinung nach) wine zur "standard"-ausrüstung gehört .... |
Es soll ja Linux-Benutzer geben, die Linux benutzen wollen und nicht Windows ... _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|