У меня есть угловое приложение, которое будет отображать некоторые изображения. Я открываю окно ajax prettyPhoto и передаю путь к URL-адресу. Мой скрипт загружает изображение нормально, однако он не отображает изображение так, как красивое фото традиционно отображает фотографию.
Что мне нужно сделать, чтобы он вел себя так, как будто он отображает фотографию? то есть: имеет полноэкранную кнопку, изменяет размер лайтбокса на фотографию и т. д.
Это вообще возможно?
Я открываю лайтбокс через:
$scope.openLightbox = function()
{
if (typeof $.prettyPhoto.open !== "function")
{
$.fn.prettyPhoto({
social_tools:false,
deeplinking: false,
keyboard_shortcuts: false
});
$.prettyPhoto.open('resources/php/view/lightbox.php?ajax=true&path=' + $base64.encode($scope.currentFile));
return;
}
$.prettyPhoto.open('resources/php/view/lightbox.php?ajax=true&path=' + $base64.encode($scope.currentFile));
}
$scope.currentFile
будет выглядеть примерно так: data/39/my_image_name.jpg
и я разбираю PHP так:
$path = base64_decode($_GET['path']);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $path);
$mimeExt = explode('/', $mime);
if ($mimeExt[0] == 'image')
{
echo '<img width="100%" height="100%" src="data:image/' . $mimeExt[1] . ';base64,' . base64_encode(file_get_contents($path)) . '">';
}
elseif ($mimeExt[0] == 'video')
{
}
finfo_close($finfo);
Как я уже сказал выше, изображение отображается просто отлично, я просто хочу, чтобы оно отображалось со стандартным поведением изображения prettyPhoto. Я понимаю, что это может быть невозможно.
ИЗМЕНИТЬ
Так что получается, что мне не нужен AJAX:
$scope.openLightbox = function()
{
if (typeof $.prettyPhoto.open !== "function")
{
$.fn.prettyPhoto({
social_tools:false,
deeplinking: false,
keyboard_shortcuts: false
});
$.prettyPhoto.open('resources/php/view/lightbox.php?path=' + $base64.encode($scope.currentFile));
return;
}
$.prettyPhoto.open('resources/php/view/lightbox.php?path=' + $base64.encode($scope.currentFile));
}
и, наконец, мой php, который я вывожу изображение прямо в браузер, так что prettyPhoto думает, что просто загружает изображение
<?php
require("../config.php");
require("../connect.php");
session_start();
if (isset($_SESSION['ds_level']))
{
$path = base64_decode($_GET['path']);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $path);
$mimeExt = explode('/', $mime);
if ($mimeExt[0] == 'image')
{
header('Content-Type: image/' . $mimeExt[1]);
echo file_get_contents($path);
}
elseif ($mimeExt[0] == 'video')
{
//do other stuff to display video
}
finfo_close($finfo);
}
else
{
//-- no access
}
?>