Hello,
I have a need to create a screen shot to a jpg file, and am trying to send it via a stored procedure to a sql server database that needs it in binary format. If I go to the toolbar, I can manually Import a file to binary, which creates a variabel at the end of the script with the Binary formatted data I can later export.
What I need is the same functionality from within my script, so that after I create the screen shot jpg file, I want to import the jpg file in binary format to a variable during script execution, then send it via a stored procedure to a sql server database. Is there any way I can do this programatically? I originally loaded the file via the readfile command, then did the base64 encode function. However, they are expecting it in the raw binary format like the manual import utiility. If I cannot do this in MS, is there a way to do it with VBScript?
Thanks in advance.
Gary
Import Binary File to variable at runtime
Moderators: Dorian (MJT support), JRL
-
- Pro Scripter
- Posts: 51
- Joined: Tue Oct 03, 2006 4:22 pm
- Location: Akron, Ohio
- Contact:
Did you try without converting to base64? The only reason I know to convert to base64 is to be able to save the file in a text file such as saving an image within a Macro Scheduler script as discussed here.I originally loaded the file via the readfile command, then did the base64 encode function. However, they are expecting it in the raw binary format like the manual import utiility.
-
- Pro Scripter
- Posts: 51
- Joined: Tue Oct 03, 2006 4:22 pm
- Location: Akron, Ohio
- Contact:
I did try that. When I do a readfile, I get ÿØÿà , which I cannot send via the stored procedure. Also, when I use the drop-down menu item of "Import Binary File", it imports the file to the end of the script in the format of
"FFD8FFE000104A464946000101000......"
which is different from when I perform the readfile to a variable, and then run the base64 encode on it to get the following:
"/9j/4AAQSkZJRgABAQAAAQABAAD/2w....."
What I am looking for is a way to create the Binary string that gets created at the end of a file when using the manual operation of "Import Binary File" so I can create the same results programatically.
All I am doing is importing a small jpg file by using the readfile command to read the file contents to a variable. That is where it reads it to a variable in the format ÿØÿà . Then when I do the base64 encode on this variable, I get a text string: "/9j/4AAQSkZJRgABAQAAAQABAAD/2w....."
When I run the Import Binary file, it creates the string "FFD8FFE000104A464946000101000......"
which is different from the other. I am trying to figure out if there is a way in MS to do this via a scripting command?
Thanks.
Gary
"FFD8FFE000104A464946000101000......"
which is different from when I perform the readfile to a variable, and then run the base64 encode on it to get the following:
"/9j/4AAQSkZJRgABAQAAAQABAAD/2w....."
What I am looking for is a way to create the Binary string that gets created at the end of a file when using the manual operation of "Import Binary File" so I can create the same results programatically.
All I am doing is importing a small jpg file by using the readfile command to read the file contents to a variable. That is where it reads it to a variable in the format ÿØÿà . Then when I do the base64 encode on this variable, I get a text string: "/9j/4AAQSkZJRgABAQAAAQABAAD/2w....."
When I run the Import Binary file, it creates the string "FFD8FFE000104A464946000101000......"
which is different from the other. I am trying to figure out if there is a way in MS to do this via a scripting command?
Thanks.
Gary
If I'm understanding correctly you want to convert the binary file to hex. Try this script. It takes a while with large files so you may need to set the VBS_TIMEOUT value (don't bother with it unless you get a timeout). This script writes the result to a text file in your temp directory
Also included "Hex2Ascii" to revert back to binary from hex
Also included "Hex2Ascii" to revert back to binary from hex
Code: Select all
//Let>VBS_TIMEOUT=10000
VBSTART
dim ascii_var
dim hex_var
Function Hex2Ascii(strHex)
Dim I
For I = 1 To Len(strHex) Step 2
Hex2Ascii = Hex2Ascii & Chr(Eval("&H" & Mid(strHex, I, 2)))
Next
ascii_var = Hex2Ascii
End Function
Function Ascii2Hex(strAscii)
Dim I
For I = 1 To Len(strAscii) Step 1
'Ascii2Hex = Ascii2Hex & Hex(ASCb(Mid(strAscii, I, 1)))
TestValue = Len (Hex(ASC(Mid(strAscii, I, 1))))
If TestValue = 1 then
Ascii2Hex = Ascii2Hex & 0 & Hex(ASC(Mid(strAscii, I, 1)))
Else
Ascii2Hex = Ascii2Hex & Hex(ASC(Mid(strAscii, I, 1)))
End if
'msgbox Hex(ASCw(Mid(strAscii, I, 1)))
Next
hex_var = Ascii2Hex
End Function
VBEND
Input>Filename,Select a file to convert
ReadFile>Filename,ascii_string
//Write Hex from Ascii
VBRun>Ascii2Hex,%ascii_string%
VBEval>hex_var,hex_string
Let>WLN_NOCRLF=1
WriteLn>%temp_dir%hex_string.txt,wresult,%hex_string%
/*
//To revert back to binary from hex
ReadFile>%temp_dir%hex_string.txt,data
VBRun>Hex2Ascii,data
VBEval>ascii_var,ascii_string
Let>WLN_NOCRLF=1
WriteLn>%temp_dir%new.jpg,wres,ascii_string
*/
-
- Pro Scripter
- Posts: 51
- Joined: Tue Oct 03, 2006 4:22 pm
- Location: Akron, Ohio
- Contact:
That seems to get me to the same hex format that the Import Binary File gets me from the menu item. Thanks so much for the vbscript to do that.
You are correct in that it does take a bit of time for it to do the conversion, but it gets what I was looking for. Thinking about the MS command, it takes some time also. I wonder why there isnt a MS command to do this, since the editor has the capability.
Thanks again for your response and solution.
Gary
You are correct in that it does take a bit of time for it to do the conversion, but it gets what I was looking for. Thinking about the MS command, it takes some time also. I wonder why there isnt a MS command to do this, since the editor has the capability.
Thanks again for your response and solution.
Gary
Happy to help.
I don't know the answer, but on the same topic from a different perspective, I've wondered why the binary import saves to a hex format. We already have a base64 function and base64 is more space efficient than hex so it would seem a better format.I wonder why there isnt a MS command to do this, since the editor has the capability.
-
- Pro Scripter
- Posts: 51
- Joined: Tue Oct 03, 2006 4:22 pm
- Location: Akron, Ohio
- Contact: