Avatar billede axkris Nybegynder
19. april 2003 - 12:00 Der er 30 kommentarer og
1 løsning

ASPImage - komprimer billede?

Hej

Jeg er ved at lege lidt med ASPImage og kunne godt tænke mig en kode, som kunne gøre følgende:

1) Gem billedet i størrelsen 80 pixels i bredden og 100 pixels i højden.
2) Komprimer billedet-kvaliteten så billedet bliver under 10 kb.
Avatar billede brock Nybegynder
19. april 2003 - 16:47 #1
Set Image = Server.CreateObject("AspImage.Image")
  Image.LoadImage(FileName)
  Image.JPEGQuality = 80
  Image.resize 80, 100
  Image.FileName = (FileName)
  Image.SaveImage
  Set Image = nothing
Avatar billede brock Nybegynder
19. april 2003 - 16:47 #2
UPS engang til


  Set FS = CreateObject("Scripting.FileSystemObject")
  FileName = Server.MapPath ("\folder\"&strFilename)


  Set Image = Server.CreateObject("AspImage.Image")
  Image.LoadImage(FileName)
  Image.JPEGQuality = 80
  Image.resize 80, 100
  Image.FileName = (FileName)
  Image.SaveImage
  Set Image = nothing

hjælper lidt at hente fil-navnet først :)
Avatar billede axkris Nybegynder
19. april 2003 - 17:16 #3
Men øh.... hvordan finder scriptet ud af, om billedet er under 10kb? (Og i fald om det skal komprimeres) Jeg tænker på at du bare har sat den til "Image.JPEGQuality = 80"

Og hvad nu hvis jeg tager et gif-billede? Vil den så også kunne komprimere det?
Avatar billede brock Nybegynder
19. april 2003 - 18:01 #4
1:
ASP image understøtter ikke at pakke image med bestemt størrelse, da bl.a. en jpg på 100x80 med 256 farver jo har brug for mere plads end en tilsvarende med 2 farver. Derfor bliver du nød til at finde en JPEGQuality, som du mener er den gennemsnitlige bedste, med mindre du selvfølgelig kender de uploadede emner, for så kan du ramme emnet med en prøvet JPEGQuality. Ked af det, det er den eneste måde!

2:
Desværre understøtter AspImage ikke komprimering af GIF, og du skal lede lang tid, for at finde en, som gør det, da GIF er et copyrightbeskyttet format og det kræver en DYR licens for udvikleren, at købe rettighed til at arbejde med gif-formattet. Det betyder, at hvis du har brug for en sådan komponent, skal du har den store pengepung frem. :(

Med venlig hilsen

Brock
Avatar billede brock Nybegynder
19. april 2003 - 18:03 #5
Bare nysgerrig, hvor skal billedet være under 10 KB ?
Avatar billede axkris Nybegynder
19. april 2003 - 18:05 #6
Fordi det skal være en thumbnail, som der skal vises en masse af... og så landede jeg bare på 10 kb.
Avatar billede brock Nybegynder
19. april 2003 - 18:09 #7
En sidste strøgtanke. Man kunne lave et script, der dannede filen målte dens størrelse og hvis det ikke var under den ønskede KB grænse komprimere filen igen med Image.JPEGQuality = x-1. Jeg vil absolut ikke anbefale metoden med en sådan loop funktion af to grunde:
1: Du skal have en time-funktionen som kan få scriptet til at vente 1-2 sekunder, indtil Serveren har gemt filen og man kan måle dens størrelse og det kan blive til mange sek., indtil man finder en JPEGQuality, som kan få filen under 10 kb.

2: Hvis denne manøvre udføres har du aldrig styr over det endelige resultat, da det kan blive mere end grimt, hvis JPEGQuality bliver for lav. ;)

med venlig hilsen

Brock
Avatar billede brock Nybegynder
19. april 2003 - 18:11 #8
Jeg har da lige fået skrive diara:)

En fil med JPEGQuality på 80 og størrelse 100x80 vil ikke snige sig over 10kb grænsen, så vidt jeg husker ;)

mvh
Brock
Avatar billede axkris Nybegynder
19. april 2003 - 18:12 #9
Men det gør ikke noget at det bliver grimt, fordi jeg har et admin-modul, hvor jeg nemt kan slette de billeder, som er grimme.

Kan du ikke lave en sådan funtion til mig alligevel... please :-)
Avatar billede axkris Nybegynder
19. april 2003 - 18:13 #10
Hvis ikke den snige sig ned under denne størrelse, kan du jo bare få funktionen til at sige det :)
Avatar billede brock Nybegynder
19. april 2003 - 18:18 #11
Set FS = CreateObject("Scripting.FileSystemObject")
  FileName = Server.MapPath ("\folder\"&strFilename)


  Set Image = Server.CreateObject("AspImage.Image")
  Image.LoadImage(FileName)
  Image.JPEGQuality = 80
  Image.resize 80, 100
  Image.FileName = (FileName)
  Image.SaveImage
  Set Image = nothing

Set newfile = FS.GetFile(FileName)
if newfile.size<10000 then etellerandet
Avatar billede brock Nybegynder
19. april 2003 - 18:24 #12
Note: ASP har desværre ikke en wait-funktion, så hvis man ikke har en wait-komponent "kan" man sætte tiden ud sådan her

for intloop=1 to 10000
next

Desværre er det en voldsom grim måde at bremse tiden, da den kræver serverpower (kig her på eksperten - folk bander af den :) )

defor vil en loop function indeholdende en sådan karl ikke være god latin !

mvh
Brock

---

Og et eller andet sted er det at skyde gråspurve med kanoner, da disse thumbnails med en passende JPEGQuality vil nå en passende størrelse (især med den størrelse 100x80)

mvh 
Brock
Avatar billede brock Nybegynder
19. april 2003 - 18:25 #13
hehe - en mere

Et godt rår: Gå mere op i udseendet på thumbnails end størrelsen, den vil altid tilpasse sig efter billedets kompliksitet.

mvh
Brock
Avatar billede brock Nybegynder
19. april 2003 - 18:25 #14
råd
Avatar billede axkris Nybegynder
19. april 2003 - 18:26 #15
>vil nå en passende størrelse (især med den størrelse 100x80)
men hvis man nu sætter et billed ned i størrelsen 100x80 vil kb-størrelsen så også automatisk gå med ned?
Avatar billede brock Nybegynder
19. april 2003 - 18:29 #16
Til en anden god gang!

en wait komponent:

http://www.serverobjects.com/comp/waitfor.zip (Gratis)

ref: http://www.eksperten.dk/spm/96817

Men hvis du ikke har rettigheder på serveren til at installere nye komponenter er det jo noget omsonst.

mvh

Brock
Avatar billede axkris Nybegynder
19. april 2003 - 18:30 #17
Se lige: 19/04-2003 18:26:39
Avatar billede brock Nybegynder
19. april 2003 - 18:32 #18
Yes
Avatar billede axkris Nybegynder
19. april 2003 - 18:35 #19
Ok tak for hjælpen.. jeg vender snart tilbage
Avatar billede musicchart.dk Nybegynder
20. april 2003 - 01:55 #20
lyttede lige med:
brock >> kan man lave .bmp om til .jpg?
Avatar billede axkris Nybegynder
20. april 2003 - 09:04 #21
godt spørgsmål... og kan man lave en gif om til en jpg? - jeg tænker her på konvertering af formatet fra gif til jpg.. vil det gå godt?
Avatar billede soda Nybegynder
21. april 2003 - 03:18 #22
Bare af ren nysgerrighed, hvorfor er det så uhyre vigtigt, at du når de 10kb. Vi lever i en tid med bredbånd og hvis du skal vise en side med mange billeder, så ved folk også det tager lidt tid, at loade det ind. Selvom på en 2Mbit (ca 20 billeder i sekundet på) eller mere.

Paint Shop Pro kan åbne alle 3 formater: BMP, GIF og JPG og samtidig gemme dem til de forskellige (konverter). Mener, at jeg har set en gif->jpg konverter engang, men det er længe siden. DOS tiden.

Jeg mener den nyeste version af ACDSee også kan konvertere billeder, men hold mig ikke op på det, da jeg stadig bruger en gammel version, som passer til mine behov.
Avatar billede axkris Nybegynder
21. april 2003 - 10:47 #23
>>soda
Vi taler i dette indlæg om at konvertere billeder på server-niveau... ikke på bruger-niveau.
Avatar billede brock Nybegynder
21. april 2003 - 12:16 #24
[musicchart.dk]

Set FS = CreateObject("Scripting.FileSystemObject")
  FileName = Server.MapPath ("\folder\"&strFilename)

mvh
Brock

  Set Image = Server.CreateObject("AspImage.Image")
  Image.LoadImage(FileName)
  Image.ImageFormat=2
  Image.FileName = (etellerandet.bmp)
  Image.SaveImage
  Set Image = nothing
Avatar billede brock Nybegynder
21. april 2003 - 12:19 #25
[axkris]

ASPImage allows you to create images on the fly from ASP. Features include:

Create GIF* (RLE encoding only. Loading of GIFs not supported) JPG, PNG, BMP, TGA and PCX format images.
Modify existing images (JPG, BMP, PNG, TGA and PCX)
Gradient fills
Animated GIF creation
A large variety of draw methods
Transparent PNG and GIF

så du kan desværre ikke loade en gif-fil

ref: http://www.serverobjects.com/products.htm#aspimage

mvh
Brock
Avatar billede brock Nybegynder
21. april 2003 - 12:24 #26
[musicchart.dk]

Undskyld, læste ikke lige dit spørgsmål ordentlig: en gang til :)

ImageFormat ImageFormat determines what graphics for the image will be saved to. The default value is JPG. Valid values are
JPG = 1
BMP = 2
PNG = 3
WBMP = 4 (version >= 2.20)
GIF = 5
TGA = 6 (version >= 2.26)
PCX = 7 (version >= 2.26)
Example:

Image.ImageFormat = 5
Image.FileName = "c:\inetpub\wwwroot\images\logo.gif"
Image.SaveImage

Altså : load din bmp og lav den om

Image.LoadImage(FileName)
Image.ImageFormat=1
Image.ImageFormat = 1
Image.FileName = "c:\folder\billede.jpg"
Image.SaveImage
Set Image = nothing

mvh
Brock
Avatar billede brock Nybegynder
21. april 2003 - 12:25 #27
Note: en komplet online dokumentation:

http://www.serverobjects.com/comp/Aspimage.htm
Avatar billede musicchart.dk Nybegynder
21. april 2003 - 12:40 #28
ja tak ;D
Avatar billede brock Nybegynder
25. april 2003 - 12:22 #29
[axkris]

Kunne det bruges?
Avatar billede axkris Nybegynder
01. maj 2003 - 20:04 #30
tak for hjælpen :-)
Avatar billede axkris Nybegynder
01. maj 2003 - 21:46 #31
Brock... kan du ikke også lige kigge på den her:
http://www.eksperten.dk/spm/347304
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