Image Resize

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

bruZard

Betreff: Image Resize

BeitragMi, Okt 26, 2005 9:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ursprünglich von filax in den eng. Codearchives gepostet, von skidracer vereinfacht und von mir jetzt so verbessert dass das Seitenverhältnis eines Bildes erhalten bleibt.

Eine einfache und schnelle Funktion um Bilder zu verkleinern/vergrössern

Code: [AUSKLAPPEN]

Function ResizeImage:TImage(image:TImage,new_width:Short)
   Local new_height:Short = (image.height*new_width/image.width)
   
   Local pix:TPixmap=LockImage(image)
   pix=ResizePixmap(pix,new_width,new_height)
   UnlockImage(image)   
   Return LoadImage(pix)
End Function


Ein kompletter Code mit Bild und Exe unter http://www.bruzard.de/download/resizeimage.zip (ca. 233kb). Mit Space wird die Bildgrösse per Zufall verändert.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

bruZard

BeitragMi, Okt 26, 2005 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs nochmal verbessert ... jetzt wird nicht immer wieder das Bild vergrössert und verkleinert, was ja dazu führt dass das Bild irgendwann mal im A**** ist, sondern ein Backup des Bildes.
Code: [AUSKLAPPEN]

Strict

Framework BRL.GlMax2d

Import BRL.JpgLoader
Import BRL.Retro

SetGraphicsDriver GLMax2DDriver()
Graphics 800,600,0,0
SetBlend ALPHABLEND

Global pic:TImage = LoadImage("pic.jpg")
SeedRnd MilliSecs()

Repeat
   Cls
   
   If KeyHit(KEY_SPACE)
      Local width:Short = Rnd(320,800)
      pic = ResizeImage(pic,width)
   EndIf
   
   DrawImage pic,0,0
   
   Flip
   FlushMem()
Until KeyHit(KEY_ESCAPE)
End


Function ResizeImage:TImage(image:TImage,new_width:Short)
   Global backup:TIMage
   If backup = Null Then backup = image
   
   Local new_height:Short = (backup.height*new_width/backup.width)
   
   Local pix:TPixmap=LockImage(backup)
   pix=ResizePixmap(pix,new_width,new_height)
   UnlockImage(backup)
      
   Return LoadImage(pix)
End Function


Das Bild ist in obigem Archiv enthalten ...
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Suco-X

Betreff: ........

BeitragMo, Nov 07, 2005 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Versteh den Sinn der neuen Version nicht ganz, Bruzard.
Das ganze ginge doch nur mit einem,nicht aber mit beispielsweise 2 verschiedenen Images. Da muss man schon von einer anderen Seite anpacken.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

bruZard

BeitragMo, Nov 07, 2005 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ... Mist ... da hast Du recht
Confused
Vielleicht könnte man mit einem "Extends TImage" was machen, dann hätte man für jedes Image eine eigene Instanz ... mal ausprobieren.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group