Pascal Gloor 5 лет назад
Родитель
Сommit
78067ef31b
5 измененных файлов: 47 добавлений и 28 удалений
  1. 45
    26
      cgi/autodoc.fcgi
  2. 2
    1
      etc/autodoc.json.default
  3. Двоичные данные
      src/error_img.xcf
  4. Двоичные данные
      var/error_img.jpeg
  5. 0
    1
      www/jquery.js

+ 45
- 26
cgi/autodoc.fcgi Просмотреть файл

@@ -205,35 +205,52 @@ sub get_page_image {
$size = $qs->{maxWidth};
}

my $src;
my $dst;

if ( !defined $id ) {
return gen_error_img($wh, $size, "No page found");
$src = $conf->{path}{error_img};
}
else {
$src = sprintf("%s/%s/%s.jpeg",
$conf->{path}{global}, $conf->{path}{original}, $id);
}

my $original = sprintf("%s/%s/%s.jpeg",
$conf->{path}{global}, $conf->{path}{original}, $id);

my $cache_file = sprintf("%s/%s/%s-original.jpeg",
$conf->{path}{global}, $conf->{path}{images}, $id);

if ( defined $wh && defined $size ) {
$cache_file = sprintf("%s/%s/%s-%s-%s.jpeg",
$conf->{path}{global}, $conf->{path}{images}, $id, $wh, $size);
if ( defined $id ) {
$dst = sprintf("%s/%s/%s-%s-%s.jpeg",
$conf->{path}{global}, $conf->{path}{cache}, $id, $wh, $size);
}
else {
$dst = sprintf("%s/%s/error_img-%s-%s.jpeg",
$conf->{path}{global}, $conf->{path}{cache}, $wh, $size);
}
}

gen_thumbnail($original, $cache_file, $wh, $size) if !-r $cache_file;

my $img='';
my $imgfile;

if ( -r $cache_file ) {
open(IMG, $cache_file) || fatal_api_error(500, "Thumbnail generation failed");
binmode(IMG);
while(<IMG>) { $img.=$_; }
close(IMG);
if ( !defined $dst ) {
$imgfile = $src;
}
else {
$img = gen_error_img($wh, $size, "No Image");
if ( ! -r $dst ) {
system(sprintf("convert %s -resize %s%s %s",
$src,
$wh eq 'h' ? 'x' : '',
$size,
$dst
));
}

$imgfile = $dst;
}

my $img = '';
open(IMG, $imgfile) || fatal_api_error(500,"Failed to generate image");
binmode(IMG);
while(<IMG>) { $img.=$_; }
close(IMG);

return $img;
}

@@ -251,17 +268,19 @@ sub gen_thumbnail {
}

sub gen_error_img {
my($wh, $size, $text) = @_;
my($wh, $size) = @_;

my $w = $size;
my $h = $size;
my $src = $conf->{page}{error_img};
my $dst = sprintf("%s/error_img-%s%s.jpeg", $conf->{path}{cache}, $wh, $size);

$h = int($w*(sqrt(2))) if $wh eq 'w';
$w = int($h/(sqrt(2))) if $wh eq 'h';
if ( ! -r $dst ) {
system(sprintf("convert %s -resize %s%s %s",
$src,
$wh eq 'h' ? 'x' : '',
$size,
$dst));
}

my $img = GD::Simple->new($w, $h);
$img->string($text);
return $img->jpeg;
}

# create an empty document object.

+ 2
- 1
etc/autodoc.json.default Просмотреть файл

@@ -3,7 +3,8 @@
"global": "/opt/autodoc",
"originals": "var/originals",
"images": "var/images",
"cache": "var/cache"
"cache": "var/cache",
"error_img": "var/error_img.jpeg"
},
"sql": {
"host": "localhost",

Двоичные данные
src/error_img.xcf Просмотреть файл


Двоичные данные
var/error_img.jpeg Просмотреть файл


+ 0
- 1
www/jquery.js Просмотреть файл

@@ -1 +0,0 @@
../src/jquery-3.4.1.min.js

Загрузка…
Отмена
Сохранить