Code archives/Graphics/HalvePic

This code has been declared by its author to be Public Domain code.

Download source code

HalvePic by EsseEmmeErre2012
This code is my discover of how to halve a picture preserving the original image points.
Enjoy!
EsseEmmeErre
;-> HalvePic public by Stefano Maria Regattin
;d> 3 Nov 2012
;m> 3 Nov 2012
;--------------
AppTitle("HalvePic public by Stefano Maria Regattin")
Graphics(710,FontHeight(),0,2)
PixPath$=Input$(">")
If FileType(PixPath$)=1 Then
 Pix=LoadImage(PixPath$)
 PixWidth=ImageWidth(Pix)
 PixHeight=ImageHeight(Pix)
 BeforeLast=PixHeight-FontHeight()-FontHeight()
 EndGraphics()
 Graphics(PixWidth,PixHeight,0,2)
 HalvedPixWidth=PixWidth/2
 HalvedPixHeight=PixHeight/2
 Immagine=LoadImage(PixPath$)
 DrawImage(Pix,0,0):Delay(2000):Cls()
 For PointY=0 To HalvedPixHeight-1
  For PointX=0 To HalvedPixWidth-1
   SetBuffer(ImageBuffer(Pix))
   PointColour=ReadPixel(PointX*2,PointY*2) And $FFFFFF
   RedOfPoint=PointColour/65536 Mod 256
   GreenOfPoint=PointColour/256 Mod 256
   BlueOfPoint=PointColour Mod 256
   PointColour=ReadPixel(PointX*2,PointY*2) And $FFFFFF
   RedOfPoint=RedOfPoint+PointColour/65536 Mod 256
   GreenOfPoint=GreenOfPoint+PointColour/256 Mod 256
   BlueOfPoint=BlueOfPoint+PointColour Mod 256
   RedOfPoint=RedOfPoint/4:GreenOfPoint=GreenOfPoint/4:BlueOfPoint=BlueOfPoint/4
   SetBuffer(FrontBuffer())
   Color(RedOfPoint,GreenOfPoint,BlueOfPoint)
   Plot(PointX,PointY)
  Next
 Next
 Locate(0,BeforeLast):Color(255,255,255):Print("Image halved.")
 Write("Press a key to leave...")
Else
 Write("Image not found, press a key to leave...")
EndIf
WaitKey()
EndGraphics():End

Comments

virtlands2013
Hi EEE.,

THat's very nice HalvePic code;

With some minor changes to your code I got it to work for me.
For some reason, it would only run on my PC if I commented out the following 'graphics' statements.



I see that your purpose was to reuse a [halved] subset of
the image color points to make an image that is
half the dimensions...
and has 25% of the original points.

I did before and after screenshots using your program. Here is "Happy Days", and cut in half:






I don't know why, but the same image halved by "Irfanview" looks brighter.

; --------------------------------------------------------

In case you'd like to investigate it further, there is this
free Library called FreeImage.DLL

http://freeimage.sourceforge.net/
http://sourceforge.net/projects/freeimage/
http://sourceforge.net/p/freeimage/discussion/

Freeimage works perfectly with Blitz3D, and it has various image manipulation routines, and is faster than the
Blitz3D's own routines.

http://freeimage.sourceforge.net/documentation.html { <--Freeimage documentation }
http://graphics.stanford.edu/courses/cs148-10-summer/docs/FreeImage3131.pdf { <-- Freeimage PDF }

The FiRescale Function is similar to what you've done with your HalvePic code, however, I doubt that
FiRescale preserves all the original half points, which makes your own HalvePic very unique.


This screenshot shows a list of Freeimage Functions:



Code Archives Forum