- Lichtbilder die anstatt im Inhalt der Akte im DMS abgelegt sind werden jetzt auch korrekt angezeigt

- Fehler behoben bei dem die Bilder nicht übers CIS nicht korrekt gespeichert wurden
This commit is contained in:
oesi
2015-08-10 13:11:08 +02:00
parent e30526e0d6
commit d287a9be8c
3 changed files with 105 additions and 38 deletions
+17 -18
View File
@@ -15,7 +15,7 @@ $user = get_uid();
function resize($filename, $width, $height)
{
$ext = 'jpg';
// Hoehe und Breite neu berechnen
list($width_orig, $height_orig) = getimagesize($filename);
@@ -36,9 +36,9 @@ function resize($filename, $width, $height)
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
else
$image_p = $image;
imagejpeg($image_p, $filename, 80);
@imagedestroy($image_p);
@imagedestroy($image);
}
@@ -59,25 +59,25 @@ else
die($p->t('global/fehlerBeiDerParameteruebergabe'));
//file als png und jpg abspeichern
file_put_contents('image.png', base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $src)));
$imageTmp=imagecreatefrompng('image.png');
imagejpeg($imageTmp, 'imagee.jpg', 100);
$tmpfname = tempnam(sys_get_temp_dir(), 'FHC');
file_put_contents($tmpfname, base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $src)));
$imageTmp=imagecreatefrompng($tmpfname);
imagejpeg($imageTmp, $tmpfname, 100);
$person_id = $_POST['person_idValue'];
$filename = 'imagee.jpg';
//profilbild speichern
if(file_exists($filename))
{
if(file_exists($tmpfname))
{
$width=101;
$height=130;
//groesse auf maximal 827x1063 begrenzen
resize($filename, 827, 1063);
resize($tmpfname, 827, 1063);
$fp = fopen($filename,'r');
$fp = fopen($tmpfname,'r');
//auslesen
$content = fread($fp, filesize($filename));
$content = fread($fp, filesize($tmpfname));
fclose($fp);
$akte = new akte();
@@ -117,13 +117,13 @@ if(file_exists($filename))
}
//groesse auf maximal 101x130 begrenzen
resize($filename, 101, 130);
resize($tmpfname, 101, 130);
//in DB speichern
//File oeffnen
$fp = fopen($filename,'r');
$fp = fopen($tmpfname,'r');
//auslesen
$content = fread($fp, filesize($filename));
$content = fread($fp, filesize($tmpfname));
fclose($fp);
//in base64-Werte umrechnen
$content = base64_encode($content);
@@ -158,6 +158,5 @@ if(file_exists($filename))
}
//temporäre files löschen
unlink($filename);
unlink('image.png');
?>
unlink($tmpfname);
?>
+46 -11
View File
@@ -26,6 +26,7 @@ require_once('../../config/cis.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/basis_db.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/dms.class.php');
session_start();
@@ -33,7 +34,7 @@ if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
//Wenn das Bild direkt aufgerufen wird, ist eine Authentifizierung erforderlich
//Wenn es vom Server selbst aufgerufen wird, ist keine Auth. notwendig
//Wenn es vom Server selbst aufgerufen wird, ist keine Auth. notwendig
//(z.B. fuer die Erstellung von PDFs)
if($_SERVER['REMOTE_ADDR']!=$_SERVER['SERVER_ADDR'])
{
@@ -41,19 +42,19 @@ if($_SERVER['REMOTE_ADDR']!=$_SERVER['SERVER_ADDR'])
if(!isset($_SESSION['prestudent/user']) && !isset($_SESSION['incoming/user']))
$uid = get_uid();
}
//default bild (ein weisser pixel)
$cTmpHEX='/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q==';
//Hex Dump aus der DB holen
if(isset($_GET['src']) && $_GET['src']=='person' && isset($_GET['person_id']) && is_numeric($_GET['person_id']))
{
$qry = "SELECT tbl_akte.inhalt as foto, tbl_person.foto_sperre FROM public.tbl_akte JOIN public.tbl_person USING(person_id) WHERE tbl_akte.person_id='".addslashes($_GET['person_id'])."' AND dokument_kurzbz='Lichtbil'";
$qry = "SELECT tbl_akte.inhalt as foto, tbl_person.foto_sperre, tbl_akte.dms_id FROM public.tbl_akte JOIN public.tbl_person USING(person_id) WHERE tbl_akte.person_id=".$db->db_add_param($_GET['person_id'], FHC_INTEGER)." AND dokument_kurzbz='Lichtbil'";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$gesperrt=false;
//Schauen ob eine Foto Sperre existiert
if($db->db_parse_bool($row->foto_sperre))
{
@@ -65,20 +66,54 @@ if(isset($_GET['src']) && $_GET['src']=='person' && isset($_GET['person_id']) &
$benutzer->load($uid);
if($benutzer->person_id==$_GET['person_id'])
$gesperrt=false;
}
}
if($row->foto=='' && $row->dms_id!='')
{
// Wenn das Foto nicht im Inhalt steht wird aus aus dem DMS geladen
$dms = new dms();
if(!$dms->load($row->dms_id))
die('Kein Dokument vorhanden');
$filename=DMS_PATH.$dms->filename;
$dms->touch($dms->dms_id, $dms->version);
if(file_exists($filename))
{
if($handle = fopen($filename,"r"))
{
while (!feof($handle))
{
$row->foto.= fread($handle, 8192);
}
fclose($handle);
}
else
echo 'Fehler: Datei konnte nicht geoeffnet werden';
}
else
echo 'Die Datei existiert nicht';
}
if($row->foto!='' && !$gesperrt)
$cTmpHEX=$row->foto;
{
if($row->dms_id=='')
$cTmpHEX=base64_decode($row->foto);
else
$cTmpHEX=$row->foto;
}
}
}
}
//die bilder werden, sofern es funktioniert, in jpg umgewandelt da es sonst zu fehlern beim erstellen
//von pdfs kommen kann.
$im = @imagecreatefromstring(base64_decode($cTmpHEX));
$im = @imagecreatefromstring($cTmpHEX);
if($im!=false)
{
{
@ob_clean();
header("Content-type: image/jpeg");
exit(imagejpeg($im));
@@ -89,6 +124,6 @@ else
//diese werden dann einfach so angezeigt.
@ob_clean();
header("Content-type: image/gif");
exit(base64_decode($cTmpHEX));
exit($cTmpHEX);
}
?>
?>
+42 -9
View File
@@ -24,6 +24,8 @@
// Aufruf mit <img src='bild.php?src=frage&frage_id=1
require_once('../config/vilesci.config.inc.php');
require_once('../include/basis_db.class.php');
require_once('../include/dms.class.php');
$db = new basis_db();
//base64 Dump aus der DB holen
$cTmpHEX='/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q==';
@@ -32,22 +34,53 @@ if(isset($_GET['src']) && $_GET['src']=='person' && isset($_GET['person_id']))
$qry = "SELECT foto FROM public.tbl_person WHERE person_id=".$db->db_add_param($_GET['person_id'], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
$cTmpHEX=$row->foto;
}
if($row = $db->db_fetch_object($result))
$cTmpHEX=base64_decode($row->foto);
}
}
elseif(isset($_GET['src']) && $_GET['src']=='akte' && isset($_GET['person_id']))
{
$qry = "SELECT inhalt as foto FROM public.tbl_akte WHERE person_id=".$db->db_add_param($_GET['person_id'], FHC_INTEGER)." AND dokument_kurzbz='Lichtbil'";
$qry = "SELECT inhalt as foto, dms_id FROM public.tbl_akte WHERE person_id=".$db->db_add_param($_GET['person_id'], FHC_INTEGER)." AND dokument_kurzbz='Lichtbil'";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
$cTmpHEX=$row->foto;
}
if($row = $db->db_fetch_object($result))
{
if($row->foto!='')
$cTmpHEX=base64_decode($row->foto);
elseif($row->dms_id!='')
{
// Wenn das Foto nicht im Inhalt steht wird aus aus dem DMS geladen
$dms = new dms();
if(!$dms->load($row->dms_id))
die('Kein Dokument vorhanden');
$filename=DMS_PATH.$dms->filename;
$dms->touch($dms->dms_id, $dms->version);
if(file_exists($filename))
{
if($handle = fopen($filename,"r"))
{
$cTmpHEX='';
while (!feof($handle))
{
$cTmpHEX.= fread($handle, 8192);
}
fclose($handle);
}
else
echo 'Fehler: Datei konnte nicht geoeffnet werden';
}
else
echo 'Die Datei existiert nicht';
}
}
}
}
//Header fuer Bild schicken
header("Content-type: image/gif");
//base64 Werte in Zeichen umwandeln und ausgeben
exit(base64_decode($cTmpHEX));
?>
exit($cTmpHEX);
?>