Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.getJpegHeightWidth
on getJpegHeightWidth (f) {
<<Changes:
<<5/2/09; 7:01:55 PM by DW
<<Maintain a cache of heights and widths in cache.root.
<<10/20/99; at 2:57:07 PM by PBS
<<Like html.getGifHeightWidth, it now supports addresses. It does still write the file out to disk, but in a temporary location, in Guest Databases/ops/Temporary Items/. After writing out the file, it deletes it.
on kernelcall (f) {
kernel (string.getJpegHeightWidth)};
if typeOf (f) == addressType { //write the file to disk in a temporary location
local (tempFolder = Frontier.getSubFolder ("ops/Temporary Items/"));
if not (file.exists (tempFolder)) {
file.newFolder (tempFolder)};
local (tempFilePath = file.uniqueName ("tempJpeg", tempFolder, 7));
file.writeWholeFile (tempFilePath, f^, 'JPEG', user.html.prefs.imgFileCreator, clock.now ());
local (hwList);
hwList = kernelcall (tempFilePath);
file.delete (tempFilePath);
return (hwList)}
else {
local (adrcache);
bundle { //init the cache
local (fmod = file.modified (f));
adrcache = mainresponder.cache.getCacheTable ();
adrcache = @adrcache^.html;
if not defined (adrcache^) {
new (tabletype, adrcache)};
adrcache = @adrcache^.hwCache;
if not defined (adrcache^) {
new (tabletype, adrcache)};
adrcache = @adrcache^.[f];
if defined (adrcache^) {
if fmod == adrcache^.modified {
return (adrcache^.hw)}};
new (tabletype, adrcache);
adrcache^.modified = fmod;
local (tc = clock.ticks ());
adrcache^.hw = kernelcall (f);
adrcache^.ticsToReadFile = clock.ticks () - tc;
return (adrcache^.hw)}}}
<<bundle //test code
<<dialog.alert (getJpegHeightWidth (@websites.samples.["#images"].wozJobs))
<<dialog.alert (getJpegHeightWidth ("Ohio:Pictures:Digital Camera:New Orleans:DSCN4483.JPG"))
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.