mirror of
https://github.com/claradex/nativegallery.git
synced 2024-12-22 16:41:04 +03:00
нормальный exif пришёл к вам дом & bugs fixes
This commit is contained in:
parent
a8bac109c2
commit
cd250cb0e5
5 changed files with 172 additions and 54 deletions
19
app/Controllers/Api/Vehicles/Load.php
Normal file
19
app/Controllers/Api/Vehicles/Load.php
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controllers\Api\Images\Comments;
|
||||
|
||||
|
||||
|
||||
use App\Services\{Auth, Router, GenerateRandomStr, DB, Json, EXIF};
|
||||
use App\Models\{User, Vote, Comment};
|
||||
|
||||
|
||||
class Load
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
$comments = DB::query('SELECT * FROM entities_data WHERE photo_id=:pid', array(':pid' => explode('/', $_SERVER['REQUEST_URI'])[4]));
|
||||
|
||||
}
|
||||
}
|
|
@ -36,11 +36,12 @@ class Upload
|
|||
$fileext = pathinfo($file, PATHINFO_EXTENSION);
|
||||
}
|
||||
$cstrong = True;
|
||||
$filecdn = bin2hex(openssl_random_pseudo_bytes(64, $cstrong)) . '.' . $fileext['extension'];
|
||||
$filecdn = bin2hex(openssl_random_pseudo_bytes(64, $cstrong)) . '.' . $fileext;
|
||||
$folder = $location . $filecdn;
|
||||
|
||||
if (strtolower (NGALLERY['root']['storage']['type']) == "s3")
|
||||
{
|
||||
|
||||
if (NGALLERY['root']['video']['upload']['cloudflare-bypass'] === true) {
|
||||
if ($location === 'cdn/video') {
|
||||
if (filesize($_SERVER['DOCUMENT_ROOT'].'/'.$location.$filecdn) >= 94371840) {
|
||||
|
@ -76,8 +77,26 @@ class Upload
|
|||
}
|
||||
else
|
||||
{
|
||||
mkdir("{$_SERVER['DOCUMENT_ROOT']}/uploads/{$location}", 0777, true);
|
||||
move_uploaded_file ($tmpname, "{$_SERVER['DOCUMENT_ROOT']}/uploads/{$folder}");
|
||||
echo $tmpname;
|
||||
$location = "your-location"; // Название локации
|
||||
$folder = "{$location}/" . basename($tmpname); // Создаем корректное имя для папки с файлом
|
||||
|
||||
$uploadDir = "{$_SERVER['DOCUMENT_ROOT']}/uploads/{$location}"; // Полный путь к директории
|
||||
|
||||
// Создание директории, если она не существует
|
||||
if (!is_dir($uploadDir)) {
|
||||
mkdir($uploadDir, 0777, true);
|
||||
}
|
||||
|
||||
// Путь к файлу, куда он должен быть перемещен
|
||||
$destination = "{$uploadDir}/" . basename($tmpname);
|
||||
|
||||
// Перемещение файла
|
||||
if (move_uploaded_file($tmpname, $destination)) {
|
||||
echo "Файл успешно перемещен!";
|
||||
} else {
|
||||
echo "Ошибка при перемещении файла.";
|
||||
}
|
||||
|
||||
$this->type = $type;
|
||||
$this->src = "/uploads/{$folder}";
|
||||
|
|
BIN
static/img/flex_arrow_open2.png
Normal file
BIN
static/img/flex_arrow_open2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1 KiB |
|
@ -285,26 +285,99 @@ if ($photo->i('id') !== null) {
|
|||
|
||||
|
||||
</td>
|
||||
<style>
|
||||
.header-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.pp-item-header {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.header-container img {
|
||||
margin-right: 5px;
|
||||
height: 20px;
|
||||
}
|
||||
</style>
|
||||
<td id="pp-main-col">
|
||||
<div id="pp-item-vdata">
|
||||
<?php
|
||||
if ($photo->content('type') != 'none' && json_decode($photo->i('exif'), true)['type'] != 'none') {
|
||||
?>
|
||||
<div class="p0" id="pp-item-exif">
|
||||
<div class="header-container">
|
||||
<h4 class="pp-item-header">Параметры съёмки</h4>
|
||||
<!--img src="/static/img/flex_arrow_open2.png" height="100%"-->
|
||||
</div>
|
||||
<div class="pp-item-body">
|
||||
<table class="linetable" id="exif">
|
||||
<?php
|
||||
$data = json_decode($photo->i('exif'), true);
|
||||
|
||||
$exif_translations = [
|
||||
'FILE.FileName' => 'Имя файла',
|
||||
'FILE.FileSize' => 'Размер файла',
|
||||
'FILE.FileDateTime' => 'Дата и время файла',
|
||||
'COMPUTED.MimeType' => 'Тип MIME',
|
||||
'IFD0.Make' => 'Производитель камеры',
|
||||
'IFD0.Model' => 'Модель камеры',
|
||||
'IFD0.Orientation' => 'Ориентация',
|
||||
'IFD0.XResolution' => 'Разрешение по X',
|
||||
'IFD0.YResolution' => 'Разрешение по Y',
|
||||
'IFD0.ResolutionUnit' => 'Единица разрешения',
|
||||
'IFD0.Software' => 'Программное обеспечение',
|
||||
'IFD0.DateTime' => 'Дата и время',
|
||||
'IFD0.Artist' => 'Автор',
|
||||
'IFD0.Copyright' => 'Авторские права',
|
||||
'EXIF.ExposureTime' => 'Время экспозиции',
|
||||
'EXIF.FNumber' => 'Диафрагма',
|
||||
'EXIF.ExposureProgram' => 'Программа экспозиции',
|
||||
'EXIF.ISOSpeedRatings' => 'ISO',
|
||||
'EXIF.ExifVersion' => 'Версия EXIF',
|
||||
'EXIF.DateTimeOriginal' => 'Дата и время оригинала',
|
||||
'EXIF.DateTimeDigitized' => 'Дата и время оцифровки',
|
||||
'EXIF.ShutterSpeedValue' => 'Значение выдержки',
|
||||
'EXIF.ApertureValue' => 'Значение диафрагмы',
|
||||
'EXIF.BrightnessValue' => 'Значение яркости',
|
||||
'EXIF.ExposureBiasValue' => 'Экспокоррекция',
|
||||
'EXIF.MaxApertureValue' => 'Максимальная диафрагма',
|
||||
'EXIF.MeteringMode' => 'Режим экспозамера',
|
||||
'EXIF.LightSource' => 'Источник света',
|
||||
'EXIF.Flash' => 'Вспышка',
|
||||
'EXIF.FocalLength' => 'Фокусное расстояние',
|
||||
'EXIF.SubjectArea' => 'Область объекта',
|
||||
'EXIF.FlashpixVersion' => 'Версия Flashpix',
|
||||
'EXIF.ColorSpace' => 'Цветовое пространство',
|
||||
'EXIF.PixelXDimension' => 'Размер изображения по X',
|
||||
'EXIF.PixelYDimension' => 'Размер изображения по Y',
|
||||
'EXIF.SensingMethod' => 'Метод съёмки',
|
||||
'EXIF.SceneType' => 'Тип сцены',
|
||||
'EXIF.ExposureMode' => 'Режим экспозиции',
|
||||
'EXIF.WhiteBalance' => 'Баланс белого',
|
||||
'EXIF.FocalLengthIn35mmFilm' => 'Фокусное расстояние для 35мм плёнки',
|
||||
'EXIF.SceneCaptureType' => 'Тип съёмки',
|
||||
'EXIF.GainControl' => 'Регулировка усиления',
|
||||
'EXIF.Contrast' => 'Контрастность',
|
||||
'EXIF.Saturation' => 'Насыщенность',
|
||||
'EXIF.Sharpness' => 'Резкость',
|
||||
'GPS.GPSLatitude' => 'Широта',
|
||||
'GPS.GPSLongitude' => 'Долгота',
|
||||
'GPS.GPSAltitude' => 'Высота',
|
||||
'GPS.GPSTimeStamp' => 'Время GPS',
|
||||
'GPS.GPSDateStamp' => 'Дата GPS'
|
||||
];
|
||||
foreach ($data as $key => $value) {
|
||||
if ($key === 'FILE.FileDateTime') {
|
||||
$value = Date::zmdate($value);
|
||||
}
|
||||
if (is_array($value)) {
|
||||
$value = implode(', ', $value); // Convert array to a comma-separated string
|
||||
if (!isset($exif_translations[$key])) {
|
||||
continue;
|
||||
}
|
||||
if (is_array($value)) {
|
||||
$value = implode(', ', $value);
|
||||
}
|
||||
$key = $exif_translations[$key] ?? $key;
|
||||
|
||||
echo '
|
||||
<tr class="s11 h21">
|
||||
|
@ -413,10 +486,14 @@ if ($photo->i('id') !== null) {
|
|||
<?php } else { ?>
|
||||
<div class="p0" id="pp-item-comments">
|
||||
|
||||
<center><p>Комментарии отключены пользователем или по усмотрению Администрации.</p></center></div>
|
||||
<center>
|
||||
<p>Комментарии отключены пользователем или по усмотрению Администрации.</p>
|
||||
</center>
|
||||
</div>
|
||||
|
||||
|
||||
<?php } } ?>
|
||||
<?php }
|
||||
} ?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -37,6 +37,9 @@ $user = new User(Auth::userid());
|
|||
|
||||
<!-- Подключение плагина Leaflet-3d-model -->
|
||||
<script src="https://unpkg.com/leaflet-3d-model/dist/leaflet-3d-model.min.js"></script>
|
||||
<script>
|
||||
var pub_pid = 0;
|
||||
</script>
|
||||
<td class="main">
|
||||
<h1>Предложить медиа на публикацию</h1>
|
||||
<p>Ваш текущий индекс загрузки: <b><?= $user->i('uploadindex') ?></b></p>
|
||||
|
|
Loading…
Reference in a new issue