minieintrag[B3D] bildbetrachter

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

da_poller

Betreff: minieintrag[B3D] bildbetrachter

BeitragSa, Sep 12, 2009 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
zuerstmal den kleinen code:
BlitzBasic: [AUSKLAPPEN]
AppTitle "bildvorschau"
Graphics 10,10,0,2
cl$=Replace(CommandLine(),Chr(34),"")
bild=LoadImage(cl)
xx=ImageWidth(bild)
yy=ImageHeight(bild)
EndGraphics
Graphics xx,yy,0,2
bild=LoadImage(cl)
DrawBlock bild,0,0
WaitKey()
End


einfach exe draus machen und bilder drauf ziehen, schon kann man das bild bequem im kleinst nötigen fenster ansehen.

warum ich den fetzen gemacht hab?
weil die ms bildvorschau viel zu groß und klobig ist, wenn ich ne skizze nebenbei betrachen will

warum poste ich das?
vllt kanns ja wer brauchen.

sollte das zu klein sein fürs codearchiv einfach trashen Wink

Nicdel

BeitragSa, Sep 12, 2009 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ja ganz nett, aber was ist mit Bilder von heutigen Digitalkameras? Die sind ja zum Teil größer als 3 Bildschirme zusammen.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

BadDeath

BeitragSa, Sep 12, 2009 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube nicht, dass es der Qualitätsoffensive des Codearchives entspricht.... Denn was macht dein Programm zb bei 6MP (3008x2008) großen Fotos? Es zeigt es 1:1 an, ohne auf den Bildschirm zu passen. Außerdem lädst du das Bild gleich zwei Mal, was das ganze extrem langsam macht bei derartigen Bilder.
-~= real coders just code in binary =~-
 

da_poller

BeitragSa, Sep 12, 2009 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe in meinem post geschrieben für skizzen. (die sind meißt kleiner als 400x300)

ich lade das bild 2 mal der einfachkeit halber wegen den fenstergrößen, das 1. wird bei endgraphics eh aus dem speicher gelöscht

große bilder sind in der windows vorschau dann praktischer(das war auch nicht ser zweck meines codes) mir ging es nur um kleine skizzen die in der bildschirmecke als denkstütze dienen (windows vorschau kann (zumindest ich) nicht beliebig klein machen.
 

FWeinb

ehemals "ich"

BeitragSa, Sep 12, 2009 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Würde mir die Funktionen von Hectic Anschauen:
Klick

Mit den Funktionen kannst du die Höhe und Breite des Bildes ohne es zu Laden auslesen. Sollte Deutlich schneller gehen, da solche Infos schon im Header des Bildes gespeichert sind.

mfg

ich

[Edit]
Da ich grade Langeweile habe ich dir mal den Code umgebaut:
BlitzBasic: [AUSKLAPPEN]

AppTitle "Bildvorschau"
cl$=Replace(CommandLine(),Chr(34),"")
xx=GetImageSize(cl$,0)
yy=GetImageSize(cl$,1)
Graphics xx,yy,0,2
bild=LoadImage(cl)
DrawBlock bild,0,0
WaitKey()
End

#Funktion von Hectic
Function GetImageSize(FImage$,FAxis%)
FImage=Lower$(FImage)
Local IFile%
Local ISize%
Local IFileX%=-1
Local IFileY%=-1
Local ICode%=$C0
Local ICheck%=0
Local ICount%

If FileType(FImage)=1 Then
Select Right$(FImage,4)

Case ".bmp"
IFile=ReadFile(FImage)
SeekFile IFile,18
IFileX=ReadInt(IFile)
IFileY=ReadInt(IFile)
CloseFile IFile
ICheck=1

Case ".pcx"
IFile=ReadFile(FImage)
SeekFile IFile,8
IFileX=ReadShort(IFile)+1
IFileY=ReadShort(IFile)+1
CloseFile IFile
ICheck=1

Case ".tga"
IFile=ReadFile(FImage)
SeekFile IFile,12
IFileX=ReadShort(IFile)
IFileY=ReadShort(IFile)
CloseFile IFile
ICheck=1

Case ".png"
IFile=ReadFile(FImage)
SeekFile IFile,16
IFileX=(ReadByte(IFile)*$1000000)+(ReadByte(IFile)*$10000)+(ReadByte(IFile)*$100)+(ReadByte(IFile)*$1)
IFileY=(ReadByte(IFile)*$1000000)+(ReadByte(IFile)*$10000)+(ReadByte(IFile)*$100)+(ReadByte(IFile)*$1)
CloseFile IFile
ICheck=1

Case ".jpg"
IFile=ReadFile(FImage)
ISize=FileSize(FImage)-10
If ISize>65532 Then ISize=65532
SeekFile IFile,0
For ICount=0 To ISize
If ReadByte(IFile)=$FF Then
If ReadByte(IFile)=$C2 Then ICode=$C2
End If
Next
SeekFile IFile,0
For ICount=0 To ISize
If ReadByte(IFile)=$FF Then
If ReadByte(IFile)=ICode Then
ReadByte(IFile)
ReadByte(IFile)
ReadByte(IFile)
IFileY=(ReadByte(IFile)*$100)+(ReadByte(IFile)*$1)
IFileX=(ReadByte(IFile)*$100)+(ReadByte(IFile)*$1)
End If
End If
Next
CloseFile IFile
ICheck=1
End Select

;Werteausgabe
If ICheck=1 Then
If FAxis=0 Then Return IFileX
If FAxis=1 Then Return IFileY
End If
End If

;Fehlerausgabe
Return -1
End Function
  • Zuletzt bearbeitet von FWeinb am Sa, Sep 12, 2009 18:16, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragSa, Sep 12, 2009 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Irfanview
Den Code halte ich für zu trivial für's Archiv...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
  • Zuletzt bearbeitet von Xeres am Sa, Sep 12, 2009 18:17, insgesamt einmal bearbeitet
 

da_poller

BeitragSa, Sep 12, 2009 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
IfranView
Den Code halte ich für zu Trivial fürs Archiv...


dann ab in müll.
mich stört das nicht groß Smile
 

aletes

BeitragSa, Sep 12, 2009 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, 32x32 Pixel große Bilder zeigt es noch nicht mal an...

Nicdel

BeitragSa, Sep 12, 2009 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es Icons sind nicht, das ist klar.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

aletes

BeitragSa, Sep 12, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Es sind aber Png-Bilder Wink

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Sep 12, 2009 22:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Graphics funktioniert erst ab X=>127 und Y=>12

Alles was kleiner ist - jeweils X/Y separat - wird dann komplett nichts mehr angezeigt.

Es kommt auch keine Fehlermeldung oder so.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Tankbuster

BeitragSa, Sep 12, 2009 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit der Blitzsys.dll kann man aber solch kleine Fenster erzeugen. Wink
Twitter
Download Jewel Snake!
Windows|Android

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group