WideImage работает только для некоторых изображений. Я не могу понять почему, потому что изображения имеют одинаковый тип файла и одинаковые размеры.
Вот мой код
<?php
error_reporting(E_ALL);
include 'WideImage/WideImage.php';
function make_thumb($src, $dest, $desired_width) {
try {
WideImage::loadFromFile($src)->resize($desired_width, 50)->saveToFile($dest);
}
catch (Exception $e) {
echo 'EXCEPTION: '.$e;
}
}
?>
Вызов функции
echo 'Thumb Creation Started';
make_thumb($filename, $thumbname, 100);
echo 'Thumb Creation Finished';
Я получаю следующую ошибку:
РЕДАКТИРОВАТЬ: эта ошибка возникает только тогда, когда я повторно отправить данные с firebug. Сначала ошибки не отображаются.
Создание большого пальца начато ИСКЛЮЧЕНИЕ: исключение
‘WideImage_InvalidImageSourceException’ с сообщением ‘Файл
«/ Kunden / домашние страницы / 33 / d582216481 / HTDOCS / добавление / загрузки / изображений
.png ‘представляется неверным источником изображения.’ в
/ Домашних страниц / 33 / d582216481 / HTDOCS / включает в себя
/WideImage/WideImage.php:226 Трассировка стека:WideImage :: loadFromFile (‘/ kunden / homepag …’)
make_thumb (‘/ kunden / homepag …’, ‘/ kunden / homepag …’, 100)
Может кто-нибудь объяснить, почему это работает для некоторых изображений, а для некоторых нет ??
<?php
error_reporting(E_ALL);
// Basic Conf
require_once ('basic_config.php');
// PHP Thumb
require_once ('phpThumb.php');
// DB INIT
require_once ($full_url.'includes/db.php');
// GET DATA FROM POST
$pid = $_POST['downloadProdukt'];
$downloadBezeichnung = $_POST['downloadBezeichnung'];
$downloadDatei = str_replace(' ', '_', $_FILES['downloadDatei']['name']);
$downloadKategorie = $_POST['downloadKategorie'];
$downloadSize = $_FILES['downloadDatei']['size'];
// GET Image adjustments
$image_info = getimagesize($_FILES["downloadDatei"]["tmp_name"]);
$image_width = $image_info[0];
$image_height = $image_info[1];
// GET FOLDER OF THE PRODUCT
$cols = Array ("PID","OrdnerName");
$db->where ('PID', $pid);
$produkte = $db->get ("produkt", null, $cols);
if ($db->count > 0){
foreach ($produkte as $produkt) {
$uploadFolder = $produkt['OrdnerName'];
}
}
// FILE
$filePath = $upload_url . $uploadFolder . "downloads/";
$rel_file_path = $uploadFolder . "downloads/";
$filename = $filePath . $downloadDatei;
$thumbname = $filePath . "thumb_" . $downloadDatei;
// Falls Ordner nicht existiert erstelle neu
if (!file_exists($filePath)) {
mkdir($filePath, 0777, true);
}
// Move file to Dir
if (move_uploaded_file($_FILES['downloadDatei']['tmp_name'], $filename)) {
//echo "Original Datei erfolgreich hochgeladen.\n";
} else {
echo "Möglicherweise eine Dateiupload-Attacke!\n";
}
// IF Image --> Generate Thumb
if (
// Wenn dateityp BILD
$_FILES['downloadDatei']['type'] == 'image/jpeg' OR
$_FILES['downloadDatei']['type'] == 'image/png' OR
$_FILES['downloadDatei']['type'] == 'image/gif'
){
echo 'Thumb Creation Started';
make_thumb($filename, $thumbname, 100);
$thumbname = "thumb_" . $downloadDatei;
echo 'Thumb Creation Finished';
} else {
$thumbname = null;
echo 'Kein Thumb';
}
// EXECUTE QUERY
$data = Array ("PID" => $pid,
'DownloadBez' => $downloadBezeichnung,
'DownloadKat' => $downloadKategorie,
'DownloadDatei' => $downloadDatei,
'DownloadOrdner' => $rel_file_path,
'DownloadSize' => $downloadSize,
'DownloadThumb' => $thumbname
);
$id = $db->insert ('downloads', $data);
?>
Задача ещё не решена.
Других решений пока нет …