[LON-CAPA-cvs] cvs: loncom /homework randomlylabel.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Wed, 11 Feb 2004 21:51:15 -0000
albertel Wed Feb 11 16:51:15 2004 EDT
Modified files:
/loncom/homework randomlylabel.pm
Log:
- start of support for LWP gotten images
Index: loncom/homework/randomlylabel.pm
diff -u loncom/homework/randomlylabel.pm:1.14 loncom/homework/randomlylabel.pm:1.15
--- loncom/homework/randomlylabel.pm:1.14 Mon Jan 12 14:53:54 2004
+++ loncom/homework/randomlylabel.pm Wed Feb 11 16:51:15 2004
@@ -2,7 +2,7 @@
# The LearningOnline Network with CAPA
# randomlabel.png: composite together text and images into 1 image
#
-# $Id: randomlylabel.pm,v 1.14 2004/01/12 19:53:54 albertel Exp $
+# $Id: randomlylabel.pm,v 1.15 2004/02/11 21:51:15 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,11 +36,41 @@
use Apache::loncommon();
use GD();
use GD::Polyline();
+use LWP::UserAgent();
sub get_image {
my ($imgsrc,$set_trans)=@_;
my $image;
- if ($imgsrc !~ /\.(png|jpg|jpeg)$/i) {
+ &Apache::lonnet::logthis("imagesrc1 is $imgsrc");
+ if ($imgsrc !~ m|^(/home/)|) {
+ &Apache::lonnet::logthis("imagesrc2 is $imgsrc");
+ if ($imgsrc !~ /^http:/) {
+ $imgsrc="http://".$ENV{'HTTP_HOST'}.$imgsrc;
+ }
+ &Apache::lonnet::logthis("imagesrc3 is $imgsrc");
+ &Apache::lonnet::logthis("LWP fetching image $imgsrc");
+ my $ua=new LWP::UserAgent;
+ my $request=new HTTP::Request('GET',"$imgsrc");
+ $request->header(Cookie => $ENV{'HTTP_COOKIE'});
+ my $file="/tmp/imagetmp".$$;
+ my $response=$ua->request($request,$file);
+ &Apache::lonnet::logthis("contetn is ".$response->content_type);
+ &Apache::lonnet::logthis($response->is_success);
+ &Apache::lonnet::logthis($response->status_line);
+ if ($response->is_success) {
+ if ($response->content_type !~ m-/(png|jpg|jpeg)$-i) {
+ my $conv_image = Image::Magick->new;
+ my $current_figure = $conv_image->Read('filename'=>$file);
+ $conv_image->Set('magick'=>'png');
+ my @blobs=$conv_image->ImageToBlob();
+ undef $conv_image;
+ $image = GD::Image->new($blobs[0]);
+ } else {
+ GD::Image->trueColor(1);
+ $image = GD::Image->new($file);
+ }
+ }
+ } elsif ($imgsrc !~ /\.(png|jpg|jpeg)$/i) {
my $conv_image = Image::Magick->new;
my $current_figure = $conv_image->Read('filename'=>$imgsrc);
$conv_image->Set('magick'=>'png');
@@ -61,7 +91,9 @@
sub handler {
my $r = shift;
$r->content_type('image/png');
+ $r->send_http_header;
my (undef,$id) = split(/=/,$ENV{'QUERY_STRING'});
+ &Apache::lonnet::logthis("BGIMG is ".$ENV{"cgi.$id.BGIMG"});
my $image=&get_image(&Apache::lonnet::unescape($ENV{"cgi.$id.BGIMG"}),0);
if (! defined($image)) {
&Apache::lonnet::logthis('Unable to create image object for -'.$id.'-'.