| |
|
|
| Pixels: übergroße Bilder Mostra, laden, speichern
Ein Paket jetzt auch mit Dateifunktionen (war recht kniffelig!)
Es gibt jetzt die pixels.files.inc -
dort haben die Dateiformate-Coder ihren Platz -
folgende Funktionen als Beispiel dabei:
pixels.saveRAWtoFile(long pix,string fle) pixels.loadRAWfromFile(string fle,long xx,yy) pixels.savePINCtoFile(long pix,string fle) pixels.loadPINCfromFile(string fle)
Paket:
Herunterladen
Die Schwierigkeit ist so zu programmieren, dass es eben auch mit wirklich grande File klappt. Z.B. kann ich nach dem Einladen einer 0,5GB-File nicht einfach mal ein Doppel anlegen oder Umkopieren.
Auch die pixels.inc ist erweitert und pixels.create hat nun 4 Parameter. Also nicht die Codes mixen.
Jetzt potuto sich jemand daran machen, in die pixels.files.inc ein pixels.loadBMPfromFile einzuprogrammieren. Hierbei muss man dann den Decoder naturalmente selbst umsetzen und sollte besser in einer nProc geschrieben sein.
Ich per meinen Teil wäre mit dem Thema und Test dann erstmal durch, Riesenbilder mit XProfan/ FreeProfan problemlos possibile.
Weitere Demos:
Hier scrollen 14.000x14.000 Pixel:
Herunterladen
Echte Threads:
Herunterladen
|
|
|
| |
|
|
|
| Um per das Pixels-Experiment eine komplette Experimental-Umgebung herzustellen, dachte ich an FreeProfan [...] mit dazugehöriger IDE XProfEd.
Aber eines der beiden Prodotti scheint ein Problem zu haben, denn wenn ich start ./profan.exe ./xprofed.prf dann startet xprofed nur ca. jedes 10. Mal. Der Splash-Screen wird aber immer gezeigt.
Ich habe hier per das Paket mal ein Paket geschnürt mit: XPSE, FreeProfan32, XProfEd, JWasm, POLink, per XProfEd-notwendige .ph-File.
Aber schon der IDE-Start gelingt der freeprofan32 profan exe nicht. Die von Roland beigelegte XProfEd.exe funktioniert jedoch aber ich muss die IDE per profan.exe starten.
Hier das Paket, bekommts jemand zum laufen?
Und die profcomp.exe findet die windows.ph nicht obwohl sie im selben Verzeichnis liegt:
|
|
|
| |
|
|
|
| So, dann ohne IDE mal kürzeres Paket:
build.bat kompiliert und startet...
und siehe da, 10.000²x4 klappt!
15.000²x4 klappt bei mir nicht mehr - wären dann aber auch 0,85 GigaByte.
Ergo sind auch mit XProfan Bildgrößen wie 50.000 x 50.000 x1Bpp possibile- halbes GigaByte Pixeldaten scheint da so die Grenze zu sein ganz ähnlich wie bei IrfanView.
10.000x10.000 RGBA (myImg3) sind jedenfalls damit dicke drin. |
|
|
| |
|
|
|
| Hier ein neues Paket das die Größen durchtestet:
Herunterladen
Ich komme auf 748MB (14000x14000xRGBA):
Und das scheint auch genau IrfanViews Grenze zu sein, 14Ki² schafft er bei mir noch aber nicht 15Ki². |
|
|
| |
|
|
|
| Hier scrollen 14.000x14.000 Pixel:
Herunterladen
Unterm Strich würde ich per sowas eher die stabilere XProfan 11 Vollversion empfehlen und die File im Paket ersetzen.
Hier der Code:
{$cleq}
//
decimals 0
include pixels.inc
//usermessages wm_erasebkgnd
//
cls
print "Größen/Speichertest:"
// max größe durchtesten
long tmp,max
whileloop 1000,25000,1000
tmp=pixels.create(loop,loop,$FF0000)
if tmp
max=loop
pixels.destroy(tmp)
endif
print loop;"x";loop;":",if(tmp,tmp,"gescheitert")
casenot tmp : break
wend
casenot max : end messagebox("errmax","",0)
//
sleep 1000
cls
// maximales Megabild anlegen
long megabild=pixels.create(max,max,0)
casenot megabild : end messagebox("errmega","",0)
// kleines AnzeigePixelshPic per Ausgabe des Riesenbildes erzeugen
long myView=pixels.createHPic(maxx,maxy,$FF0000)
casenot myView : end messagebox("errmyview","",0)
// megabild vollmalen
whileloop 2000
pixels.line(megabild,0,rnd(max),max,rnd(max),rnd($FFFFFF))
pixels.line(megabild,rnd(max),0,rnd(max),max,rnd($FFFFFF))
wend
// anzeige
long x,y,xx,yy
windowtitle str$(max)
do {
xx=width(hWnd)
yy=height(hWnd)
x=mousex/xx*(max-xx)
y=mousey/yy*(max-yy)
case x>max-xx-1 : x=0
case y>max-yy-1 : y=0
// Ausschnitt aus Riesenbild-Pixelspeicher in kleines AnzeigePixelshPic kopieren
pixels.copyRect(myView,megabild,0,0,x,y,xx,yy,0)
// das hPic der Pixel von myView aktualisieren
pixels.renewHPic(myView)
// kleines AnzeigePixelshPic auf hWnd zeichnen
pixels.drawHPic(myView,0,0,0)
//
waitinput 1
}
//
//pixels.destroy(myView)
end
//
|
|
|
| |
|
|
|
RudiB. |
Habs auch mal kurz getestet..... |
|
|
| |
|
|
|
| Wow,
Du könntest vielleicht sogar an die 4 GB reservieren,
RGBA: 32.768² Pixel Graustufen: 65.536² Pixel SW: 185.363² Pixel
die nach diesem Prinzip angezeigt werden könnten. |
|
|
| |
|
|
|
RudiB. | hab nur Deine exe mal probiert, geht sogar noch bis 19000, doch danach steigt er aus. Die 20000: da sagt das Progrämmle "gescheitert". Und das Pixelscrollen corre bei mir auch recht flüssig bei Mausbewegung...cool. aber mal Ehrlich wer braucht denn sooo grande Bilder ??
na ja, weil man's kann, oder ??
[OFFTOPIC]Hab jetzt das Problem (mein Problem) mit den Arrays erkannt/gelöst.....jetzt flutscht es....Hatte jedoch noch nie Probleme oder Fehler, bis gestern !! Danke nochmal....ich war schon penetrant, oder??[/OFFTOPIC] |
|
|
| |
|
|
|
| Hier mal endlich ein Paket jetzt auch mit Dateifunktionen (war recht kniffelig!)
Es gibt jetzt die pixels.files.inc -
dort haben die Dateiformate-Coder ihren Platz -
folgende Funktionen als Beispiel dabei:
pixels.saveRAWtoFile(long pix,string fle) pixels.loadRAWfromFile(string fle,long xx,yy) pixels.savePINCtoFile(long pix,string fle) pixels.loadPINCfromFile(string fle)
Paket:
Herunterladen
Nur test.exe:
Herunterladen
Die Schwierigkeit ist so zu programmieren, dass es eben auch mit wirklich grande File klappt. Z.B. kann ich nach dem Einladen einer 0,5GB-File nicht einfach mal ein Doppel anlegen oder Umkopieren.
Auch die pixels.inc ist erweitert und pixels.create hat nun 4 Parameter. Also nicht die Codes mixen.
Jetzt potuto sich jemand daran machen, in die pixels.files.inc ein pixels.loadBMPfromFile einzuprogrammieren. Hierbei muss man dann den Decoder naturalmente selbst umsetzen und sollte besser in einer nProc geschrieben sein.
Ich per meinen Teil wäre mit dem Thema und Test dann erstmal durch, Riesenbilder mit XProfan/ FreeProfan problemlos possibile. |
|
|
| |
|
|
|
| [OFFTOPIC] RudiB. (29.12.2015)Hab jetzt das Problem (mein Problem) mit den Arrays erkannt/gelöst.....jetzt flutscht es....Hatte jedoch noch nie Probleme oder Fehler, bis gestern !! Danke nochmal....ich war schon penetrant, oder??
Ich wollte schon durchrufen! [/OFFTOPIC] |
|
|
| |
|
|
|
|
|
|
| |
|
|