Looking to resize an image (Full Version)

All Forums >> [Web Development] >> General Web Development



Message


dzirkelb1 -> Looking to resize an image (10/4/2005 16:53:32)

I'm looking to resize an image without loosing its clarity at its current size. I have Paint Shop pro 9, but all I really know what to do with it is open stuff. I have resized it using this program, but it gets really blocky. I was wondeirng, is it possible to resize an image without loosing its clarity? I'm obviously looking to make it bigger. The image is here at [http://www.msushoppers.com/new_web/images/logo1.jpg[/link]. I'm looking to make it like 95 in height and 145 or so in width, or maybe even bigger.




Mike54 -> RE: Looking to resize an image (10/4/2005 17:08:04)

Resizing down is one thing, resizing up is quite another. The image doesn't look to sharp to me to start with. have you something better to wok with?




bobby -> RE: Looking to resize an image (10/4/2005 17:13:54)

the problem is that the computer can't extrapolate the pixel distribution for upsizing... in other words the pixels get enlarged rather than redistributed, which makes the image look more like a screenshot of an old Atari 2600 video game...

[:)]




dpf -> RE: Looking to resize an image (10/4/2005 22:05:35)

think of it this way..at its given size, it has a certain amount of detail..to enlarge it, you create more space..more pixels..where does the detail to fill those spaces come from? in old photography, your negative size limited how big u could blow it up - that hasnt changed.




d a v e -> RE: Looking to resize an image (10/5/2005 0:07:38)

redraw it as a vector with the pen tool (see psp help?) and then you can resize it to your hearts content. you'll not get anything done with that as it is ;)




dzirkelb1 -> RE: Looking to resize an image (10/5/2005 10:50:18)

Thanks for the responses guys! I was just hoping photoshop 9 was smart enough to fix it somehow, guess it was just a pipe dream!

Hehe, redraw it...this isn't going to be pretty :) I don't even know how to make the sides of the pictures fade the shades of purple!




d a v e -> RE: Looking to resize an image (10/5/2005 11:34:57)

photoshop 9 or psp 9??! either way it's going nothing really to do with how 'smart' the application is ;)

i know at the newspaper i worked at they had some *very* expensive software that could resize images (larger) with little loss of quality but that sort of stuff isn't available to mortals and i never saw the results :)

i tried using the pen tool in psp - even after reading the help files and it sucks!!! but then i probably don't understand it! (though i've used the pen tools in everything from corel draw 3 up, photoshop, freehand, quarkxpress,fireworks....)

anyway i found a Word version of the USA map, copied it into freehand then exported as illutrator file (no import for illustrator file or Word format [.wmf/.emf] ?!!!!) then went from there in fireworks. if anyone knows a way of getting vector formats from fireworks to psp then you can have a copy :)
otherwise i can do you a version to the size you want like the attched - though not sure what font you used, i used eras bold ITC




[image]local://upfiles/5827/F15F079A06A543BD8FDFCEE79A658D1E.jpg[/image]




dzirkelb1 -> RE: Looking to resize an image (10/5/2005 12:48:39)

heh, i didnt' make the original...I have no idea how to make any sort of graphics, but, I do know how to code it in :)

That image looks awesome!! I may just have to use that one :)




d a v e -> RE: Looking to resize an image (10/5/2005 12:49:34)

is there any particular size you would like?




dzirkelb1 -> RE: Looking to resize an image (10/5/2005 13:01:43)

That I'm not sure on yet...The best would be 303 width by 67 height; however, I think that would make it look wierd.




d a v e -> RE: Looking to resize an image (10/5/2005 14:14:12)

yep - that's going to look weird!
:)




rdouglass -> RE: Looking to resize an image (10/5/2005 15:54:39)

Just my $.02

I do a lot of work on Intranets and this may not be a good solution for Internet sites but I find it very handy.

Normally, I'll want to include the client's logo or other images many places in the site at many different sizes. I've 'kludged' together some ASP functions that takes any image and scales it down to whatever width you desire - and it looks good to boot. This has saved me quite a bit of time since I don't have to scale images anymore.

Here goes:

Put *all* of this code somewhere at the top of the page before the <head> tag. (I normally will put this in an include file since I use it in many pages throughout the site.)

<%
function GetBytes(flnm, offset, bytes)

     Dim objFSO
     Dim objFTemp
     Dim objTextStream
     Dim lngSize

     on error resume next

     Set objFSO = CreateObject("Scripting.FileSystemObject")
     
     Set objFTemp = objFSO.GetFile(flnm)
     lngSize = objFTemp.Size
     set objFTemp = nothing

     fsoForReading = 1
     Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)

     if offset > 0 then
        strBuff = objTextStream.Read(offset - 1)
     end if

     if bytes = -1 then  ' Get All!

        GetBytes = objTextStream.Read(lngSize)  'ReadAll

     else

        GetBytes = objTextStream.Read(bytes)

     end if

     objTextStream.Close
     set objTextStream = nothing
     set objFSO = nothing

  end function


  function lngConvert(strTemp)
     lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
  end function

  function lngConvert2(strTemp)
     lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
  end function

  function gfxSpex(flnm, width, height, depth, strImageType)

     dim strPNG 
     dim strGIF
     dim strBMP
     dim strType
     strType = ""
     strImageType = "(unknown)"

     gfxSpex = False

     strPNG = chr(137) & chr(80) & chr(78)
     strGIF = "GIF"
     strBMP = chr(66) & chr(77)

     strType = GetBytes(flnm, 0, 3)

     if strType = strGIF then    ' is GIF

        strImageType = "GIF"
        Width = lngConvert(GetBytes(flnm, 7, 2))
        Height = lngConvert(GetBytes(flnm, 9, 2))
        Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
        gfxSpex = True

     elseif left(strType, 2) = strBMP then  ' is BMP

        strImageType = "BMP"
        Width = lngConvert(GetBytes(flnm, 19, 2))
        Height = lngConvert(GetBytes(flnm, 23, 2))
        Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
        gfxSpex = True

     elseif strType = strPNG then   ' Is PNG

        strImageType = "PNG"
        Width = lngConvert2(GetBytes(flnm, 19, 2))
        Height = lngConvert2(GetBytes(flnm, 23, 2))
        Depth = getBytes(flnm, 25, 2)

        select case asc(right(Depth,1))
           case 0
              Depth = 2 ^ (asc(left(Depth, 1)))
              gfxSpex = True
           case 2
              Depth = 2 ^ (asc(left(Depth, 1)) * 3)
              gfxSpex = True
           case 3
              Depth = 2 ^ (asc(left(Depth, 1)))  '8
              gfxSpex = True
           case 4
              Depth = 2 ^ (asc(left(Depth, 1)) * 2)
              gfxSpex = True
           case 6
              Depth = 2 ^ (asc(left(Depth, 1)) * 4)
              gfxSpex = True
           case else
              Depth = -1
        end select


     else

        strBuff = GetBytes(flnm, 0, -1)  ' Get all bytes from file
        lngSize = len(strBuff)
        flgFound = 0

        strTarget = chr(255) & chr(216) & chr(255)
        flgFound = instr(strBuff, strTarget)

        if flgFound = 0 then
           exit function
        end if

        strImageType = "JPG"
        lngPos = flgFound + 2
        ExitLoop = false

        do while ExitLoop = False and lngPos < lngSize

           do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
              lngPos = lngPos + 1
           loop

           if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
              lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
              lngPos = lngPos + lngMarkerSize  + 1
           else
              ExitLoop = True
           end if

       loop
       '
       if ExitLoop = False then

          Width = -1
          Height = -1
          Depth = -1

       else

          Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
          Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
          Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
          gfxSpex = True

       end if
                   
     end if

  end function
  
  
FUNCTION fitImageInWindowWidth(imagename,cellwidth)

  myImageFileName = imagename
  
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objF = objFSO.GetFolder(Server.Mappath("/images/"))
  Set objFC = objF.Files

  For Each f1 in objFC

     if gfxSpex(Server.Mappath("/images/" & myImageFileName), w, h, c, strType) = true then

	fitImageInWindowWidth = ("<img src='/images/" & myImageFileName & "' width='" & cellwidth & "' height='" & fix((h*cellwidth)/w) & "'>") ' & cellwidth & " x " & fix((h*cellwidth)/w))

     end if

  Next

  set objFC = nothing
  set objF = nothing
  set objFSO = nothing

END FUNCTION
%>


and call the function by using code like this:

<%=fitImageInWindowWidth("image1.jpg",200)%>

This will make the image "image1.jpg" 200 pixels wide and scale the height proportionally. Change the image and pix size to whatever you desire.

Now this is assuming the images are in the "/images" folder off the root and this code is run from a page at the root level.

A coupla' points to make:

1. This code prioritizes width. It could be adapted to prioritize height.

2. AFAIK it only scales down. I've never tried it scaling up.

3. Currently works with JPG, GIF, PNG, and BMP file types but I'm hoping to add more soon.

4. It does not resize the image before being sent to the browser. The server sends the whole image and then the browser scales it. Hence, not really recommended for widespread use on Internet sites.

However, I have found that it is very responsive if you use it for a hi-res logo or something of that nature. Since most files are cached locally, once the logo is downloaded, most browser configs will use the cached copy so performance issues are negligible. Again tho, if you're using lots of hi-res images in lots of places, you will notice the download performance hits. The good news however is that since your image size is specified, most browsers will 'reserve' the space on the page while the image is downloading.

Again, I find this most helpful in Intranet sites and is very valuable if I just need to grab another 20 pix or so for another item on just 1 page. I just change the width parameter on the function call and it's done. Don't have to open any image editors etc.

Hope it helps someone.




dzirkelb1 -> RE: Looking to resize an image (10/6/2005 12:19:13)

Thats pretty interesting bit of code there....could come in handy someday. Thanks :)




dzirkelb1 -> RE: Looking to resize an image (10/6/2005 15:18:31)

I just put it into my web and it looks awesome Dave!! Thanks a ton!

you can look at it at www.msushoppers.com/new_web/index.htm

Its not finished, but that is around what it will look like. Now, I am going to add a little bit of flash on the Welcome to MSU portion (just like a bright light going across it or something, nothing fancy. Sort of like the animation found at http://www.nolitter.org/; however, I can't figure out which animation it is in swishmax :)




steve@cgis -> RE: Looking to resize an image (12/6/2005 16:41:12)

I realize this thread is a little old, but I just stumbled on it today. I took a look at rdouglass' code and created a function that returns the scaled width and height when you pass in the complete path to the file and the new bounding width and height.

Function setImageInfo (pathToImage, width, height)
	Dim myImageFileName
	Dim w, h, c, strType
	Dim dimensionRatio
	
	dimensionRatio = width/height
	
	on error resume next
	
	   if gfxSpex(pathToImage, w, h, c, strType) = true then
			Dim newHeight
			Dim newWidth

			if w/h >= dimensionRatio then
				newWidth = width
				newHeight = width/w * h
			else
				newHeight =  height
				newWidth = height/h * w
			end if		
	   end if   
	setImageInfo = CLng(newWidth) & ", " & Clng(newHeight)
End Function


You can use this by creating a variable and using the split function to fill it as an array.

imageInfo = Split(setImageInfo( filename, width, height))

then access the info like this:
width="<%=imageInfo(0)%>" height="<%=imageInfo(1)%>"


Also noticed that fitImageInWindowWidth function could be improved my removing all the File System Object variables and removing the for each loop. There is a lot of unnecessary work going on in that function.


I hope this is helpful to you.

Thanks for the original posts.






Kitka -> RE: Looking to resize an image (12/6/2005 18:12:55)

quote:

i know at the newspaper i worked at they had some *very* expensive software that could resize images (larger) with little loss of quality but that sort of stuff isn't available to mortals and i never saw the results :)


There is software available for mere mortals - Genuine Fractals

I got a free copy about 2 years ago, on one of the CDs that come with computer magazines. It is a program I always intend to install when I really need it, but I seem to always forget. So I can't vouch for its efficacy, but might be worth a try.

<edit>30 day trial download here: http://www.ononesoftware.com/download.php

Also they have a 50% off the price of the full 4.1 version till 31 December </edit>




rdouglass -> RE: Looking to resize an image (12/6/2005 20:44:13)

quote:

returns the scaled width and height


That's a cool add-on and I have done that as well but I caution you that your method can make your pics look screwey if your widths and heights aren't in proportion to the original pic.

My code used just the width as the controlling factor. You could easily change it to use the height as the controlling one as well but it currently sets the width and then scales the height to keep the displayed pic proportional to the original.

Your addition is good code and useful but just a word of caution with it's usage.[;)]

quote:

Also noticed that fitImageInWindowWidth function could be improved my removing all the File System Object variables and removing the for each loop. There is a lot of unnecessary work going on in that function.


Good observations but those additional routines were in there for the benefits of other routines and functions elsewhere in the code. I use lots of includes and reuse my functions wherever possible. You are right that this code could be more efficient but then I'd have to re-code in other areas. [:(]




Rocket Boy -> RE: Looking to resize an image (12/8/2005 20:08:18)

Somebody may have already mentioned this, apologies if so... depending on how big the picture is (and how much you need to enlarge it) The Sharpen tool might help.




Page: [1]

Valid CSS!




Forum Software © ASPPlayground.NET Advanced Edition 2.4.5 ANSI
0.09375