📄 sketch
字号:
#!/usr/local/bin/perl# sketch - G.O. 7/27/98# modified CC 11/8/99# for Blobworld sketchpadrequire "../../cgi/query_utils.p";require "../../cgi/schema.p";require "/elib/sys/bin/sql_utils_inf.p";$DEBUG = 0; # if 1, call only DB keyword match; if 2, don't call anything$GET_SHAPE = 0; # by default$FILTER = 0; # otherwise, do the full query$heading = "Blobworld Sketchpad";$num_imgs = 35000; # hardwired, for now$requested_imgs = 5000;printf "Content-type: text/html\n\n";&get_input;if ($keywords eq "nokeywords") { $keywords = "";} elsif ($keywords eq "getshape") { $GET_SHAPE = 1; $keywords = "";} else { &get_keyword_matches;}if ($DEBUG) { print "<HTML><HEAD>\n<TITLE>"; print "$heading</TITLE></HEAD>\n"; print "<BODY BGCOLOR=#FFFFFF>\n"; print "<A HREF=/>\n"; print "</A>\n"; print "<H2>$heading</H2>\n"; print "<br clear=left><HR>"; print "<b>Incoming:</b> $in<P><HR><P>\n"; print "<b>Parsed variables:</b><P>\n"; if ($keywords eq "") { print "<b>No keywords specified</b><br>\n"; } else { print "<b>Keywords:</b> $keywords<br>\n"; } print "<b>xsize:</b> $xsize, <b>ysize:</b> $ysize<br>\n"; &print_blob_info("1"); if ($numblobs == 2) { &print_blob_info("2"); }}$server = $ENV{'SERVER_PORT'};if ($server == 8080) { $head = "/elib/sys/test/httpd";} else { $head = "/elib/sys/httpd";}if ($numblobs == 0) { # query using just keywords $cmd = "$head/cgi-bin/blobrank/query_keywords_only $num_from_keywords $imlist $num_imgs \"$keywords\" $dbtime $head";} else { $cmdinnards = "$numblobs"; for ($blobid = 1; $blobid <= $numblobs; $blobid++) { $cmdinnards = "$cmdinnards $overall_weight[$blobid] $col_weight[$blobid] $tex_weight[$blobid] $loc_weight[$blobid] $shape_weight[$blobid] $numcolors[$blobid]"; if ($numcolors[$blobid] > 1) { $cmdinnards = "$cmdinnards $col1[$blobid] $col2[$blobid]"; } else { $cmdinnards = "$cmdinnards $col1[$blobid]"; } $cmdinnards = "$cmdinnards $tex[$blobid]"; $cmdinnards = "$cmdinnards $num_shape_points[$blobid] $shape[$blobid]"; } $cmdinnards = "$cmdinnards $xsize $ysize"; if ($keywords eq "") { # query using just blob(s) if ($GET_SHAPE) { # call version that just returns shape parameters $cmd = "$head/cgi-bin/blobrank/sketch/query_sketch_get_shape"; } elsif ($FILTER) { $cmd = "$head/cgi-bin/blobrank/query_sketch_filter"; } else { $cmd = "$head/cgi-bin/blobrank/query_sketch_full"; } $cmd = "$cmd $cmdinnards $num_imgs $requested_imgs $head"; } else { # query using blob(s) + keywords $cmd = "$head/cgi-bin/blobrank/query_sketch_partial_randomaccess"; $cmd = "$cmd $cmdinnards $num_imgs $num_from_keywords $head $imlist"; $cmd = "$cmd \"$keywords\" $dbtime"; }}if (!$DEBUG) { print `$cmd`;} else { print "<P><HR><P>cmd: |$cmd|\n"; print "</BODY>\n"; print "</HTML>\n";}sub get_input { local (*in) = @_ if @_; local ($i, $key, $val); # Read in text $in = $ENV{'QUERY_STRING'}; @params = split(/\,/,$in); $keywords = $params[0]; $keywords = &strip($keywords); # get rid of extra spaces $keywords =~ s/ and / /g; # get rid of "and,or,not" $keywords =~ s/ or / /g; $keywords =~ s/ not / /g; $count = 1; $xsize = $params[$count++]; $ysize = $params[$count++]; $numblobs = $params[$count++]; if ($numblobs == 0) { $error= "<h4>Please go back and select at least one blob</4>\n"; return; } if ($numblobs == 1 || $numblobs == 2) { $blobid = 1; $numcolors[$blobid] = $params[$count++]; $col1[$blobid] = $params[$count++]; if ($numcolors[$blobid] == 2) { $col2[$blobid] = $params[$count++]; } &get_blob_stuff($blobid); if ($numblobs == 2) { $blobid = 2; $numcolors[$blobid] = $params[$count]; $count++; $col1[$blobid] = $params[$count]; $count++; if ($numcolors[$blobid] == 2) { $col2[$blobid] = $params[$count]; $count++; } &get_blob_stuff($blobid); } } else { $error = "<h4>Error: numblobs = $numblobs; you can only pick one or two blobs<h4>"; return; }}sub get_blob_stuff { local($blobid) = @_; $tex[$blobid] = $params[$count]; $count++; $overall_weight[$blobid] = $params[$count]; $count++; $col_weight[$blobid] = $params[$count]; $count++; $tex_weight[$blobid] = $params[$count]; $count++; $loc_weight[$blobid] = $params[$count]; $count++; $shape_weight[$blobid] = $params[$count]; $count++; $num_shape_points[$blobid] = $params[$count]; $count++; $shape[$blobid] = $params[$count]; $count++;}sub get_keyword_matches { if ($DEBUG eq 2) { print "not sending keyword query to DB<br>\n"; $num_from_keywords = "NO_KW_NUM"; $imlist = "NO_IMLIST"; $dbtime = "NO_DB_TIME"; } else { ##### send keywords to DB to get a list of matches. ##### result --> $imlist of length $num_from_keywords ##### also set $dbtime to time taken by DB, if possible; otherwise, ##### set $dbtime = -1; $dbtime = -1; $u_k = uc($keywords); $kw_query = ""; @words = split(/_/,$u_k); # parse the incoming string into words $first = 1; foreach $word (@words) { if ($first eq 0) { $kw_query = "$kw_query AND "; } $kw_query = "$kw_query (diskname like '%$word%' or keywords like '%$word%' or description like '%$word%')"; $first = 0; } $kw_query = "select imgnum from img_bw where $kw_query"; $tmp = &get_multiple_records($kw_query); $num_from_keywords = $num_matches; open(FH, "$tmp") || die "Can't open tmp file for reading"; while(<FH>) { chomp($_); $imlist .= "$_ "; } close(FH); if ($DEBUG eq 1) { print "<p>Database results:<p>\n"; print "kw_query: $kw_query<p>\n"; print "num_from_keywords: $num_from_keywords<p>\n"; print "imlist: $imlist<p>\n"; print "<p><hr><p>\n"; } } }sub print_blob_info { local($blobid) = @_; print "<p><b>Blob $blobid</b>\n"; print "<dd>weight for this blob: $overall_weight[$blobid]\n"; if ($numcolors[$blobid] > 1) { print "<dd>two colors: $col1[$blobid] and $col2[$blobid]\n"; } else { print "<dd>one color: $col1[$blobid] \n"; } print "<dd>texture: $tex[$blobid]\n"; print "<dd>weights: color=$col_weight[$blobid] texture=$tex_weight[$blobid] location=$loc_weight[$blobid] shape=$shape_weight[$blobid] \n"; print "<dd>geometry: number of points = $num_shape_points[$blobid]; points = $shape[$blobid]\n"; }##1; #return true
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -