List Any Image Full Information without Loading

Share your advanced PureBasic knowledge/code with the community.
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

List Any Image Full Information without Loading

Post by RASHAD »

Hi

Code: Select all

Global lvalue

RegConnectRegistry_("", #HKEY_CURRENT_USER, @lHKeyhandle) 
RegOpenKeyEx_(lHKeyhandle, "Software\Microsoft\Windows Script Host\Settings", 0, #KEY_ALL_ACCESS, @lhkey)
RegQueryValueEx_(lhkey, "Enabled", 0, @lType, 0, @cch)
RegQueryValueEx_(lhkey, "Enabled", 0, @lType, @lValue, @cch)
RegCloseKey_(lhkey)

If lvalue = 0
  vdata.i = 1
  RegConnectRegistry_("", #HKEY_CURRENT_USER, @lHKeyhandle) 
  RegOpenKeyEx_(lHKeyhandle, @"Software\Microsoft\Windows Script Host\Settings", 0, #KEY_ALL_ACCESS, @lhkey) 
  RegSetValueEx_(lhkey,@"Enabled",0,#REG_DWORD,@vdata,4) 
  RegCloseKey_(lhkey)
EndIf

Repeat
  file$ = OpenFileRequester("Please choose file to load", "",  "Image (*.bmp;*.gif;*.jpeg;*.jpg;*.png;*.tif;*.tiff)" , 0)
  If file$
    OpenFile(0,GetHomeDirectory()+"RASHAD.vbs")
      WriteStringN(0,"Dim Img 'As ImageFile")
      WriteStringN(0,"Dim s 'As String")
      WriteStringN(0,"Dim v 'As Vector")
      WriteStringN(0,"Dim File 'As String")
      WriteStringN(0,"File = "+Chr(34)+file$+Chr(34))
      WriteData(0,?RASHAD,?RASHADend-?RASHAD)
    CloseFile(0)
    RunProgram("WScript.exe",GetHomeDirectory()+"RASHAD.vbs","",#PB_Program_Wait)
    DeleteFile(GetHomeDirectory()+"RASHAD.vbs")
   EndIf
   result = MessageRequester("","More Images ?",#PB_MessageRequester_YesNo|#MB_ICONQUESTION)
 Until Result = #PB_MessageRequester_No

RegConnectRegistry_("", #HKEY_CURRENT_USER, @lHKeyhandle) 
RegOpenKeyEx_(lHKeyhandle, @"Software\Microsoft\Windows Script Host\Settings", 0, #KEY_ALL_ACCESS, @lhkey) 
RegSetValueEx_(lhkey,@"Enabled",0,#REG_DWORD,@lvalue,4) 
RegCloseKey_(lhkey)
            
DataSection
RASHAD:
   Data.q $20676D4920746573,$657461657243203D,$22287463656A624F,$67616D492E414957,$0D2922656C694665
   Data.q $616F4C2E676D490A,$694620656C694664,$20730A0D0A0D656C,$6567616D4922203D,$4620262022203D20
   Data.q $6276202620656C69,$5F202620664C7243,$5722202020200A0D,$22203D2068746469,$572E676D49202620
   Data.q $2220262068746469,$226C657869502020,$4C72436276202620,$200A0D5F20262066,$6769654822202020
   Data.q $262022203D207468,$6965482E676D4920,$2022202620746867,$20226C6578695020,$664C724362762026
   Data.q $20200A0D5F202620,$6874706544222020,$4920262022203D20,$6C657869502E676D,$2026206874706544
   Data.q $2022505042202022,$664C724362762026,$20200A0D5F202620,$7A69726F48222020,$7365526C61746E6F
   Data.q $206E6F6974756C6F,$6F5220262022203D,$2E676D4928646E75,$746E6F7A69726F48,$756C6F7365526C61
   Data.q $202620296E6F6974,$2022495044202022,$664C724362762026,$20200A0D5F202620,$6974726556222020
   Data.q $6C6F7365526C6163,$203D206E6F697475,$6E756F5220262022,$65562E676D492864,$65526C6163697472
   Data.q $6E6F6974756C6F73,$4420202220262029,$6276202620224950,$5F202620664C7243,$4622202020200A0D
   Data.q $6E756F43656D6172,$20262022203D2074,$6D6172462E676D49,$2620746E756F4365,$0D664C7243627620
   Data.q $6D492066490A0D0A,$65646E4973492E67,$6C65786950646578,$742074616D726F46,$2020200A0D6E6568
   Data.q $262073203D207320,$206C657869502220,$6E6F632061746164,$617020736E696174,$6E6920657474656C
   Data.q $2620227365786564,$0D664C7243627620,$0D664920646E450A,$6D492066490A0D0A,$68706C4173492E67
   Data.q $6F466C6578695061,$6568742074616D72,$73202020200A0D6E,$2220262073203D20,$6164206C65786950
   Data.q $6120736168206174,$666E69206168706C,$6E6F6974616D726F,$7243627620262022,$20646E450A0D664C
   Data.q $66490A0D0A0D6649,$4573492E676D4920,$506465646E657478,$6D726F466C657869,$0D6E656874207461
   Data.q $3D2073202020200A,$6950222026207320,$61746164206C6578,$7478652073616820,$6F63206465646E65
   Data.q $6F666E6920726F6C,$206E6F6974616D72,$2F74696220363128,$296C656E6E616863,$7243627620262022
   Data.q $20646E450A0D664C,$66490A0D0A0D6649,$4173492E676D4920,$20646574616D696E,$20200A0D6E656874
   Data.q $2073203D20732020,$6567616D49222026,$6D696E6120736920,$2026202264657461,$0A0D664C72436276
   Data.q $0A0D664920646E45,$676D492066490A0D,$747265706F72502E,$736978452E736569,$3930303422287374
   Data.q $6E65687420292231,$7620746553090A0D,$502E676D49203D20,$6569747265706F72,$3139303034222873
   Data.q $65756C61562E2922,$2073202020200A0D,$542220262073203D,$22203D20656C7469,$7274532E76202620
   Data.q $6276202620676E69,$6E450A0D664C7243,$0A0D0A0D66492064,$502E676D49206649,$6569747265706F72
   Data.q $7374736978452E73,$2232393030342228,$0A0D6E6568742029,$3D20762074655309,$6F72502E676D4920
   Data.q $2873656974726570,$2922323930303422,$0A0D65756C61562E,$203D207320202020,$6D6F432220262073
   Data.q $22203D20746E656D,$7274532E76202620,$6276202620676E69,$6E450A0D664C7243,$0A0D0A0D66492064
   Data.q $502E676D49206649,$6569747265706F72,$7374736978452E73,$2233393030342228,$0A0D6E6568742029
   Data.q $3D20762074655309,$6F72502E676D4920,$2873656974726570,$2922333930303422,$0A0D65756C61562E
   Data.q $203D207320202020,$7475412220262073,$2022203D20726F68,$697274532E762026,$436276202620676E
   Data.q $646E450A0D664C72,$490A0D0A0D664920,$72502E676D492066,$736569747265706F,$287374736978452E
   Data.q $2922343930303422,$090A0D6E65687420,$203D207620746553,$706F72502E676D49,$2228736569747265
   Data.q $2E29223439303034,$200A0D65756C6156,$73203D2073202020,$7779654B22202620,$22203D207364726F
   Data.q $7274532E76202620,$6276202620676E69,$6E450A0D664C7243,$0A0D0A0D66492064,$502E676D49206649
   Data.q $6569747265706F72,$7374736978452E73,$2235393030342228,$0A0D6E6568742029,$3D20762074655309
   Data.q $6F72502E676D4920,$2873656974726570,$2922353930303422,$0A0D65756C61562E,$203D207320202020
   Data.q $6275532220262073,$22203D207463656A,$7274532E76202620,$6276202620676E69,$6E450A0D664C7243
   Data.q $0A0D0A0D66492064,$20262073203D2073,$2A2A2A2A2A2A2A22,$2A2A2A2A2A2A2A2A,$2A2A2A2A2A2A2A2A
   Data.q $2A2A2A2A2A2A2A2A,$2A2A2A2A2A2A2A2A,$2A2A2A2A2A2A2A2A,$2A2A2A2A2A2A2A2A,$0D222A2A2A2A2A2A
   Data.q $6F4267734D0A0D0A,$2020202020732078,$2020202020202020,$20202020
RASHADend:
EndDataSection

Edit :modified for Windows script disabled
Last edited by RASHAD on Fri Oct 27, 2017 12:01 pm, edited 1 time in total.
Egypt my love
User avatar
RSBasic
Moderator
Moderator
Posts: 1228
Joined: Thu Dec 31, 2009 11:05 pm
Location: Gernsbach (Germany)
Contact:

Re: List Any Image Full Information without Loading

Post by RSBasic »

Thanks for sharing, but this only works if WScript is enabled on the system.
Does it also work with enabled security function "SmartScreen"?
Image
Image
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: List Any Image Full Information without Loading

Post by RASHAD »

Hi RSBasic
Previous post updated
Tested PB v5.61 x86 Windows v10 x64
Egypt my love
User avatar
RSBasic
Moderator
Moderator
Posts: 1228
Joined: Thu Dec 31, 2009 11:05 pm
Location: Gernsbach (Germany)
Contact:

Re: List Any Image Full Information without Loading

Post by RSBasic »

Thank you very much.
Image
Image
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4954
Joined: Sun Apr 12, 2009 6:27 am

Re: List Any Image Full Information without Loading

Post by RASHAD »

You are most welcome
Next is a version you can keep the data appended in a file
GetHomeDirectory()+"Image properties.txt"

Code: Select all

Global lvalue

RegConnectRegistry_("", #HKEY_CURRENT_USER, @lHKeyhandle)
RegOpenKeyEx_(lHKeyhandle, "Software\Microsoft\Windows Script Host\Settings", 0, #KEY_ALL_ACCESS, @lhkey)
RegQueryValueEx_(lhkey, "Enabled", 0, @lType, 0, @cch)
RegQueryValueEx_(lhkey, "Enabled", 0, @lType, @lValue, @cch)
RegCloseKey_(lhkey)

If lvalue = 0
  vdata.i = 1
  RegConnectRegistry_("", #HKEY_CURRENT_USER, @lHKeyhandle)
  RegOpenKeyEx_(lHKeyhandle, @"Software\Microsoft\Windows Script Host\Settings", 0, #KEY_ALL_ACCESS, @lhkey)
  RegSetValueEx_(lhkey,@"Enabled",0,#REG_DWORD,@vdata,4)
  RegCloseKey_(lhkey)
EndIf

Repeat
  file$ = OpenFileRequester("Please choose file to load", "",  "Image (*.bmp;*.gif;*.jpeg;*.jpg;*.png;*.tif;*.tiff)" , 0)
  If file$
    DeleteFile(GetHomeDirectory()+"resolution2.vbs")
    OpenFile(0,GetHomeDirectory()+"resolution2.vbs")
      Restore vbs
      For i = 0 To 7
        Read.s text$
        WriteStringN(0, text$)
      Next
      WriteStringN(0,"objImage.LoadFile "+Chr(34)+File$+Chr(34))
      For i = 0 To 13
        Read.s text$
        WriteStringN(0, text$)
      Next
      WriteStringN(0,"objTextFile.WriteLine("+Chr(34)+file$+Chr(34)+")")
      For i = 0 To 10
        Read.s text$
        WriteStringN(0, text$)
      Next
    CloseFile(0)   
    RunProgram("WScript.exe",GetHomeDirectory()+"resolution2.vbs","",#PB_Program_Wait)
    DeleteFile(GetHomeDirectory()+"resolution2.vbs")
    result = MessageRequester("","More Images ?",#PB_MessageRequester_YesNo|#MB_ICONQUESTION)
  EndIf
Until Result = #PB_MessageRequester_No

RegConnectRegistry_("", #HKEY_CURRENT_USER, @lHKeyhandle)
RegOpenKeyEx_(lHKeyhandle, @"Software\Microsoft\Windows Script Host\Settings", 0, #KEY_ALL_ACCESS, @lhkey)
RegSetValueEx_(lhkey,@"Enabled",0,#REG_DWORD,@lvalue,4)
RegCloseKey_(lhkey)

DataSection
vbs:
  Data.s "Option Explicit"
  Data.s "Dim objFSO, objFolder, objShell, objTextFile, objFile"
  Data.s "Dim strDirectory, strFile, strText, objImage"
  Data.s "strDirectory = "+Chr(34)+"c:\users\rashad"+Chr(34)
  Data.s "strFile = "+Chr(34)+"\Image properties.txt"+Chr(34)
  Data.s "strText = "+Chr(34)+" "+Chr(34)
  Data.s "Set objFSO = CreateObject("+Chr(34)+"Scripting.FileSystemObject"+Chr(34)+")"
  Data.s "Set objImage = CreateObject("+Chr(34)+"WIA.ImageFile"+Chr(34)+")"
  Data.s "If objFSO.FolderExists(strDirectory) Then"
  Data.s "Set objFolder = objFSO.GetFolder(strDirectory)"
  Data.s "Else"
  Data.s "Set objFile = objFSO.CreateTextFile(strDirectory & strFile)"
  Data.s "End If"
  Data.s "If objFSO.FileExists(strDirectory & strFile) Then"
  Data.s "Set objFolder = objFSO.GetFolder(strDirectory)"
  Data.s "Else"
  Data.s "Set objFile = objFSO.CreateTextFile(strDirectory & strFile)"
  Data.s "End If"
  Data.s "set objFile = nothing"
  Data.s "set objFolder = nothing"
  Data.s "Const ForAppending = 8"
  Data.s "Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True)"
  Data.s "objTextFile.WriteLine("+Chr(34)+"Width: "+Chr(34)+" & objImage.Width & "+Chr(34)+"  pixels"+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"Height: "+Chr(34)+" & objImage.Height & "+Chr(34)+"  pixels"+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"Resolution: "+Chr(34)+" & Round(objImage.HorizontalResolution) & "+Chr(34)+"  DPI"+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"Pixel Depth: "+Chr(34)+" & objImage.PixelDepth & "+Chr(34)+"  BPP"+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"Frame Count : "+Chr(34)+" & objImage.FrameCount & "+Chr(34)+"  Frame/s"+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"File Extension : "+Chr(34)+" & objImage.FileExtension & "+Chr(34)+"  Format"+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"IsAlphaPixelFormat : "+Chr(34)+" & objImage.IsAlphaPixelFormat & "+Chr(34)+""+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"******************************************************"+Chr(34)+")"
  Data.s "objTextFile.WriteLine("+Chr(34)+"                                                      "+Chr(34)+")"
  Data.s "objTextFile.Close"
  Data.s "WScript.Quit"
endvbs:
EndDataSection 
Egypt my love
Post Reply