aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2017-11-20 14:48:29 -0800
committerzotlabs <mike@macgirvin.com>2017-11-20 14:48:29 -0800
commit56d981c8ef0680d5124214b4cd8849b9a42feeb7 (patch)
tree669f3fea4f078d5bca0ee8c9d244c1df90e91f59
parent250d947667b1500633d80b043ac3760be21446fc (diff)
downloadvolse-hubzilla-56d981c8ef0680d5124214b4cd8849b9a42feeb7.tar.gz
volse-hubzilla-56d981c8ef0680d5124214b4cd8849b9a42feeb7.tar.bz2
volse-hubzilla-56d981c8ef0680d5124214b4cd8849b9a42feeb7.zip
provide a generalised interface for thumbnail generators to support various content types
-rw-r--r--Zotlabs/Daemon/Thumbnail.php60
-rw-r--r--Zotlabs/Thumbs/Text.php49
2 files changed, 74 insertions, 35 deletions
diff --git a/Zotlabs/Daemon/Thumbnail.php b/Zotlabs/Daemon/Thumbnail.php
index aeea07410..caf5dd3ae 100644
--- a/Zotlabs/Daemon/Thumbnail.php
+++ b/Zotlabs/Daemon/Thumbnail.php
@@ -17,46 +17,36 @@ class Thumbnail {
if(! $c)
return;
- $preview_style = intval(get_config('system','thumbnail_security',0));
+ $preview_style = intval(get_config('system','thumbnail_security',0));
+ $preview_width = intval(get_config('system','thumbnail_width',300));
+ $preview_height = intval(get_config('system','thumbnail_height',300));
$attach = $c[0];
- $isize = 300;
+ $default_controller = null;
- if(strpos($attach['filetype'],'text/') !== false) {
- $stream = @fopen($attach['content'],'rb');
- if($stream) {
- $content = trim(stream_get_contents($stream,4096));
- $content = str_replace("\r",'',$content);
- $content_a = explode("\n",$content);
- }
- if($content_a) {
- $fsize = 4;
- $lsize = 8;
- $image = imagecreate($isize,$isize);
- imagecolorallocate($image,255,255,255);
- $colour = imagecolorallocate($image,0,0,0);
- $border = imagecolorallocate($image,64,64,64);
-
- $x1 = 0;
- $y1 = 0;
- $x2 = ImageSX($image) - 1;
- $y2 = ImageSY($image) - 1;
-
- for($i = 0; $i < 2; $i++) {
- ImageRectangle($image, $x1++, $y1++, $x2--, $y2--, $border);
- }
-
- foreach($content_a as $l => $t) {
- $l = $l + 1;
- $x = 3;
- $y = ($l * $lsize) + 3 - $fsize;
- imagestring($image,1,$x,$y,$t,$colour);
- if(($l * $lsize) >= $isize) {
- break;
+ $files = glob('Zotlabs/Thumbs/*.php');
+ if($files) {
+ foreach($files as $f) {
+ $clsname = '\\Zotlabs\\Thumbs\\' . ucfirst(basename($f,'.php'));
+ if(class_exists($clsname)) {
+ $x = new $clsname();
+ if(method_exists($x,'Match')) {
+ $matched = $x->Match($attach['filetype']);
+ if($matched) {
+ $x->Thumb($attach,$preview_style,$preview_width,$preview_height);
+ }
+ }
+ if(method_exists($x,'MatchDefault')) {
+ $default_matched = $x->MatchDefault(substr($attach['filetype'],0,strpos($attach['filetype'],'/')));
+ if($default_matched) {
+ $default_controller = $x;
+ }
}
}
- imagejpeg($image,$attach['content'] . '.thumb');
}
}
+ if(($default_controller) && (! file_exists(dbunescbin($attach['content']) . '.thumb'))) {
+ $default_controller->Thumb($attach,$preview_style,$preview_width,$preview_height);
+ }
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Thumbs/Text.php b/Zotlabs/Thumbs/Text.php
new file mode 100644
index 000000000..86d788992
--- /dev/null
+++ b/Zotlabs/Thumbs/Text.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Zotlabs\Thumbs;
+
+
+class Text {
+
+ function MatchDefault($type) {
+ return(($type === 'text') ? true : false );
+ }
+
+ function Thumb($attach,$preview_style,$height = 300, $width = 300) {
+
+ $stream = @fopen(dbunescbin($attach['content']),'rb');
+ if($stream) {
+ $content = trim(stream_get_contents($stream,4096));
+ $content = str_replace("\r",'',$content);
+ $content_a = explode("\n",$content);
+ }
+ if($content_a) {
+ $fsize = 4;
+ $lsize = 8;
+ $image = imagecreate($width,$height);
+ imagecolorallocate($image,255,255,255);
+ $colour = imagecolorallocate($image,0,0,0);
+ $border = imagecolorallocate($image,64,64,64);
+
+ $x1 = 0;
+ $y1 = 0;
+ $x2 = ImageSX($image) - 1;
+ $y2 = ImageSY($image) - 1;
+
+ for($i = 0; $i < 2; $i++) {
+ ImageRectangle($image, $x1++, $y1++, $x2--, $y2--, $border);
+ }
+
+ foreach($content_a as $l => $t) {
+ $l = $l + 1;
+ $x = 3;
+ $y = ($l * $lsize) + 3 - $fsize;
+ imagestring($image,1,$x,$y,$t,$colour);
+ if(($l * $lsize) >= $height) {
+ break;
+ }
+ }
+ imagejpeg($image,dbunescbin($attach['content']) . '.thumb');
+ }
+ }
+} \ No newline at end of file