Avatar billede vbcoder Nybegynder
09. september 2003 - 07:58 Der er 24 kommentarer og
1 løsning

Resize med AspImage - hvorfor er det gemte billede hvidt

Jeg har lavet sub der tager et AspImage objekt, indlæser et image fra disk, resizer og gemmer igen - men det gemte, ændrede billede er hvidt? Nogen gode ideer?

Koden er her

'****************************************************************************
'load - resize - save
'****************************************************************************
Sub DoTheImage(objImage, intNewWidth, strLoadFileName, strSaveFileName, intWidth, intHeight)
    ' visualcoder.dk 090903
    ' this sub loads an image from diskfile
    ' resizes the image maintaining aspect ration
    ' and saves the image back to disk
    ' parameters
    '                        objImage - an active AspImage object
    '                        intNewWidth - the new width to resize to
    '                        strLoadFileName - absolute path to image file
    '                        strSaveFileName - absolute path to image file
    '                        intWidth - the current width
    '                        intHeight - the current height
           
    ' new image height used in the resizing
    Dim intNewHeight
     
  'set some properties
    'remove pads around image
    objImage.PadSize = 0
   
    'MaxX and MazY
  objImage.MaxX = intHeight
  objImage.MaxY = intWidth
 
  'imageformat to jpg
  'objImage.ImageFormat = 1

    'set the save filename
    objImage.FileName = strSaveFileName
   
    'load image from disk
    'check for errors loading file
    if not(objImage.LoadImage (strFileName)) then
        'write out errormsg and end
        response.write("<class color='red' size='5'>file not found in sub DoTheSize LoadImage - check the filename</class>")
        response.end
    end if
   
    'do the resize
 
  'calculate new height
  intNewHeight = (intNewWidth / Image.MaxX) * Image.MaxY
 
  'resize and resample - can be slow
  objImage.ResizeR intNewWidth, intNewHeight
   
    'save image back to disk
    'check for errors saving file
    if not(objImage.SaveImage) then
        'write out error msg
        response.write("<class color='red' size='5'>could not write file in sub DoTheImage LoadImage - check permissions on folder</class>")
        response.end
    end if

end sub
Avatar billede keysersoze Ekspert
09. september 2003 - 09:37 #1
den normale grund til at billedet bliver hvidt er at der ikke blev læst noget billede ind i aspimage - jeg kan fra ovenstående ikke lige umiddelbart se hvor billedet bliver loadet (kan godt se linien med "'load image from disk"), men lige umiddelbart ser det ikke ud som om der kommer noget ind...
Avatar billede vbcoder Nybegynder
09. september 2003 - 11:25 #2
da loadimage returnerer true/false laver jeg et

if not(objImage.LoadImage (strFileName)) then

response.write("<class color='red' size='5'>file not found in sub DoTheSize LoadImage - check the filename</class>")
Avatar billede keysersoze Ekspert
09. september 2003 - 11:38 #3
jeg kan godt se at det er det du forsøger - men hvor skulle den få strFileName fra?

så lad os antage at dette tjeck af en eller anden grund ikke virker - hvor loader du så billedet? der skal du jo have kørt objImage.LoadImage et sted - og så skal der loades et billede der også virkelig eksisterer og det gør strFileName da variablen slet ikke eksisterer med nogen værdi
Avatar billede vbcoder Nybegynder
09. september 2003 - 11:55 #4
Jeg dokumenterer altid min kode

hvis du kigger i toppen af min sub er alle parametre forklaret.

objImage er bliver dannet inden kaldet til sub'en og er en ligesom den tager alle de nødvendige parametre

//vbcoder
Avatar billede vbcoder Nybegynder
09. september 2003 - 11:57 #5
dvs at objImage i sub'en blot er en variabel der referer til et aktivt objekt.

det kaldes kode genbrug ;-) da sub'en kan bruges til flere forskellige objekter samtidig og flere forskellige filer med forskellige slutstørrelser
Avatar billede keysersoze Ekspert
09. september 2003 - 12:01 #6
det kan jeg godt se - men så forklar mig hvor

strFileName

bliver sat?

Jeg kan godt se at objImage bliver dannet - men jeg kan som sagt ikke se hvor strFileName sættes og jeg kan heller ikke se nogle steder du benytter LoadImage så der også loades et billede ind... det bliver jo ikke loadet idet du kører det i din if-sætning
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:15 #7
strFilename er et parameter - det bliver sat i kaldet til sub'en

doh - der var den - den option explicit er ikke meget værd her.

jeg har en option explicit i toppen af den includefil hvor min sub ligger i - den fortæller mig ikke at jeg ikke har erklæret en variabel med det navn - strFileName.

Den skal heller ikke være der den hedder strLoadFileName - jeg må indrømme at den fejl havde jeg ikke ventet ;-)

//vbcoder
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:20 #8
og hvad mere er : objImage returnerer success selvom den indlæser et tomt filnavn

det er da helt umuligt at fejlfinde på

smider du lige et svar
Avatar billede keysersoze Ekspert
09. september 2003 - 12:20 #9
godt - det var  i hvert fald én ting...

dernæst mht load af fil. Jeg skal ikke kunne som om du kan benytte det på den måde i en if-sætning så jeg skal ikke kunne sige om den er som den skal være eller ej. Men uanset om den if-statement virker eller ej så skal du så også loade billedet et sted :)
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:24 #10
objImage.LoadImage er en funktion i AspImage objektet der returnerer true/false for succes/failure

dvs at når jeg kalder

if not (objImage.LoadImage (strLoadFileName)) then

vil .LoadImage blive eksekveret før checket på returværdien

det svarer til at bruge en returværdi

returnValue = objImage.LoadImage(strLoadFileName)

if returnValue then
  'success


eller if not returnValue then
  'failure


//vbcoder
Avatar billede keysersoze Ekspert
09. september 2003 - 12:24 #11
så måske noget i retning af

if objImage.LoadImage(strFileName) = "" then
eller
if len(objImage.LoadImage(strFileName)) = 0 then

måske...
Avatar billede keysersoze Ekspert
09. september 2003 - 12:27 #12
så vidt jeg husker fra aspimage - så er funktionen objImage.LoadImage den funktion der reelt loader billedet;

Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage (server.mappath("../../log/temp/" & MySmartUpLoad.Files.Item(1).FileName & ""))
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:29 #13
jeg har løst problemet - det var

strFileName - den skulle være strLoadFileName

og nu virker det - test 80.199.194.178 - der er hul til min udvikler maskine
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:30 #14
så du åbnede lige mine øjne for problemet
Avatar billede keysersoze Ekspert
09. september 2003 - 12:32 #15
80.199.194.178 svarer ikke ;)
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:34 #16
mens jeg har lavet den her har jeg haft mange problemer med de komponenter

AspImage og AspSmartUpload

constant får jeg surrogate com object has generated an error og så lukker hele min iis ned kører xp pro
Avatar billede keysersoze Ekspert
09. september 2003 - 12:36 #17
bruger selv de to ting en del - men har nu aldrig haft probs af noget art...
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:40 #18
nu svarer den igen
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:41 #19
gad vide om jeg glemmer at rydde op efter mig ?
Avatar billede keysersoze Ekspert
09. september 2003 - 12:43 #20
og nu svarer den ikke ;)

det kunne være en grund - men så burde den ikke gå ned så hurtigt
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:43 #21
nu gør den det spilme igen
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:44 #22
hmm - gad vide om jeg skal igennem en reinstallation - det håber jeg ikke - har ikke tid - hjælp
Avatar billede vbcoder Nybegynder
09. september 2003 - 12:54 #23
tak for hjælpen - så jeg oppe igen
Avatar billede hnteknik Novice
09. september 2003 - 13:12 #24
>>vbcoder

Fik du styr på din aspImage eller sig til.
I owe you one.
Henrik
Avatar billede vbcoder Nybegynder
09. september 2003 - 13:18 #25
jeps - takker - der er fuldstændig styr på den
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester