Größe eines vorhandenen Bildes ändern

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Freeman

Betreff: Größe eines vorhandenen Bildes ändern

BeitragMi, Mai 25, 2005 23:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

ich suche eine möglichkeit um die größe eines Bildes in Bmax zu ändern. Das heißt zum Beispiel von 16*16 zu 32*32 zu konvertieren.ich dachte da gäbe es einen Befehl,aber ich habe keinen gefunden, dann hab ich versucht per createimage nen neues zu erstellen und das bestehende da raufzupacken,aba ich erzähl besser nich weiter...

FrEeMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

regaa

BeitragMi, Mai 25, 2005 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax: [AUSKLAPPEN]

Method Resize:TImage(_W:Int, _H:Int)
Local _Bild:TImage=Bild
Local _Map:TPixmap

SetClsColor 255,0,255

_Map=CreatePixmap(ImageWidth(_Bild),ImageHeight(_Bild),PF_RGB888)
DrawImage _Bild,0,0
_Map=GrabPixmap(0,0,ImageWidth(_Bild),ImageHeight(_Bild))
_Map=ResizePixmap(_Map,_W,_H)

Cls

_Bild=CreateImage(_W,_H)
DrawPixmap(_Map,0,0)
GrabImage(Bild,0,0)

_Bild=Null
_Map=Null

Return Bild
End Method


Ich nutze diese Methode um in einem ImageBox Element eine Bildgröße zu verändern. Hoffentlich hilft dir das weiter. Keine Ahnung ob es leichter und / oder schneller geht, aber es geht.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

Dreamora

BeitragDo, Mai 26, 2005 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Pixmaps sind eine katastrophal langsame Methode ...

Code: [AUSKLAPPEN]

function resize_image:TIMAGE (img:TIMAGE, width:int, height:int)
' hinweis: width und height müssen gleich gross und 2er Potenzen sein.
' alles andere ist falsch und wird von opengl 1.2 als auch BM net akzeptiert!

  local sx:float, sy:float
  local temp:TIMAGE
  temp = createimage (width,height)
  getscale (sx,sy)

  setscale width/float(imagewidth(img)), height/float(imageheight(img))
  cls
  drawimage img
  grabimage (temp,0,0)
  setscale (sx,sy)
  return temp
end function
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Freeman

BeitragDo, Mai 26, 2005 9:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ich finde es ersteinmal toll das ihr beide diese ideen gehabt habt,allerdings bewirken ja beide im entdeffekt das selbe. Aber es ist meine Schuld das ihr mich missverstanden habt,denn ich habe mich falsch ausgedrückt. das ganze sollte so aussehen :

neues bild(32*32)+bild(16*16) = 1 Bild (32*32)

es soll halt so aussehen das man nen größeres Bild macht und das alte einfach drauflegt und das ganze als ein bild nutzen kann. So sollte es sein.
Allerdings sind eure Varianten auch nicht schlecht, allerdings dehnen diese ein Bild,was ich eigentlich nicht wollte.

FrEeMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28
 

Dreamora

BeitragDo, Mai 26, 2005 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so Smile

Gut das ist noch einfacher Very Happy

Code: [AUSKLAPPEN]

function put_image_on:TIMAGE (img:TIMAGE, new_width:int,  new_height:int)

 local sx:float, sy:float
 local temp:TIMAGE
 
 temp = createimage (new_width, new_height)
 getscale (sx,sy)
 setscale (1,1)

 cls
 drawimage img, 0,0
 grabimage temp, 0,0
 setscale (sx,sy)
 return temp
end function
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

regaa

BeitragDo, Mai 26, 2005 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Pixmaps sind eine katastrophal langsame Methode ...

Code: [AUSKLAPPEN]

function resize_image:TIMAGE (img:TIMAGE, width:int, height:int)
' hinweis: width und height müssen gleich gross und 2er Potenzen sein.
' alles andere ist falsch und wird von opengl 1.2 als auch BM net akzeptiert!


Was wäre also dein Vorschlag damit man nicht unbedingt 2er Potenzen bilden muss und es nicht so "katastrophal langsam" ist?
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

Dreamora

BeitragDo, Mai 26, 2005 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Garnicht, denn an 2er Potenzen + quadratisch kommst du nicht vorbei, da die nicht OpenGL 1.2 entsprechen und vor der Geforce 4 auch garnet akzeptiert wurden.

Deswegen wandelt BM die Bilder auch entsprechend um beim Laden.

Ansonsten: Der gleiche weg wie oben. Also anstatt 2x über Pixmap zu gehen es nur 1x verwenden.
(grabimage macht intern nämlich grabpixmap und konvertiert es dann)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Freeman

BeitragDo, Mai 26, 2005 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, das hat erstmal funktioniert, trotzdem hätt ich da noch die Frage ist pixmap schneller als image ?

FrEeMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group