Improve image thumbnail

And auto download apk for android
This commit is contained in:
toto 2022-02-16 16:32:05 +01:00 committed by Imperator
parent 673f0433ed
commit 0f2f5172ac
4 changed files with 180 additions and 2 deletions

View File

@ -1,9 +1,23 @@
<?php
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(stripos($ua,'android') !== false): // && stripos($ua,'mobile') !== false) {
$file = "localTransfer-app.apk";
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"". basename($file) ."\"");
readfile ($file);
//header("Location: ".$_SERVER['REQUEST_URI'].$file);
exit();
else:
?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<link href="style/style.css" rel="stylesheet">
<link rel="stylesheet" href="style/imagepreview.min.css"/>
<link rel="stylesheet" href="style/imagepreview.css"/>
<link href="/fontawesome/css/all.css" rel="stylesheet" />
<title>Local Transfer</title>
</head>
@ -32,7 +46,10 @@
<div id="transProgress"></div>
<script src="js/jquery-3.5.1.min.js" type="text/javascript"></script>
<script src="js/imagepreview.min.js" type="text/javascript"></script>
<script src="js/imagepreview.js" type="text/javascript"></script>
<script src="js/script.js"></script>
</body>
</html>
<?php
endif;
?>

52
js/imagepreview.js Normal file
View File

@ -0,0 +1,52 @@
!(function (a) {
"use strict";
a.fn.anarchytip = function (b) {
var c = a.extend({ xOffset: 10, yOffset: 30 }, b);
return this.each(function () {
var b = a(this);
b.hover(
function (b) {
(this.t = this.title), (this.title = "");
var d = "" != this.t ? "<br/>" + this.t : "";
a("body").append("<p id='preview'><img src='' alt='Image preview' />" + d + "</p>"),
a("#preview")
.css({ top: b.pageY - c.xOffset + "px", left: b.pageX + c.yOffset + "px" })
.fadeIn();
downloadThumbnail(this.pathname);
},
function () {
(this.title = this.t), a("#preview").remove();
}
),
b.mousemove(function (b) {
a("#preview")
.css("top", b.pageY - c.xOffset + "px")
.css("left", b.pageX + c.yOffset + "px");
});
});
};
})(jQuery);
function downloadThumbnail(file) {
var href = 'thumbnail.php'
var blobUrl;
$.ajax({
url: href,
data: {
"file": file,
"size": '200'
},
xhrFields:{
responseType: 'blob'
},
success: function(data){
var blob = data;
blobUrl = window.URL.createObjectURL(new Blob([blob], {type: blob.type}));
console.log(blobUrl);
$('#preview img').attr('src', blobUrl);
},
error: error,
dataType: 'binary'
});
};

63
style/imagepreview.css Normal file
View File

@ -0,0 +1,63 @@
body {
margin: 0;
padding: 40px;
background: #fff;
font: 80% Arial, Helvetica, sans-serif;
color: #555;
line-height: 180%;
}
h1 {
font-size: 180%;
font-weight: 400;
color: #555;
}
h2 {
clear: both;
font-size: 160%;
font-weight: 400;
color: #555;
margin: 0;
padding: 0.5em 0;
}
a {
text-decoration: none;
color: #f30;
}
p {
clear: both;
margin: 0;
padding: 0.5em 0;
}
pre {
display: block;
font: 100% "Courier New", Courier, monospace;
padding: 10px;
border: 1px solid #bae2f0;
background: #e3f4f9;
margin: 0.5em 0;
overflow: auto;
width: 800px;
}
img {
border: none;
max-width: 300px;
}
ul,
li {
margin: 0;
padding: 0;
}
li {
list-style: none;
float: left;
display: inline;
margin-right: 10px;
}
#preview {
position: absolute;
border: 1px solid #ccc;
background: #333;
padding: 5px;
display: none;
color: #fff;
}

46
thumbnail.php Normal file
View File

@ -0,0 +1,46 @@
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$root = $_SERVER["DOCUMENT_ROOT"];
$directory = "/uploads/";
if(isset($_GET["file"])) {
$file = $root.urldecode($_GET["file"]);
$size = isset($_GET["size"]) ? $_GET["size"] : 100;
if(file_exists($file)) {
echo getthumbnail($file, $size);
exit();
}
else {
header("HTTP/1.1 400 File not Found");
echo $file." not Found";
exit();
}
}
function getthumbnail(string $file, int $size)
{
list($width, $height) = getimagesize($file);
// Create an Imagick object
$imagick = new Imagick($file);
// Function to set the background color
$imagick->setbackgroundcolor('rgb(0, 0, 0)');
// Use thumbnailImage function
$imagick->thumbnailImage($width*$size/$height, $size, true, true);
header("Content-Type: image/jpg");
// Display the output image
echo $imagick->getImageBlob();
}
?>