Nogen der har oplevet noget lignende med ImageMagick
Hej Eksperter.Jeg har et script, hvor jeg laver nogle thumbnail og noget omdøbning af filnavne og det virker sådan set også fint, lige bortset fra, hvis jeg sætter min header() på i bunden.
Den går fint derhen, hvor den skal og sætter alting ind i db'en, men den sletter det billede jeg lige har genereret med ImageMagick.
Jeg synes det er meget mærkeligt.
KODE
<?php
session_start();
require_once("../../includes/inc.config.php");
require_once("../../classes/class.advSql.php");
$sql = new DB_Mysql(MYSQL_USER, MYSQL_PASS, MYSQL_HOST, MYSQL_DATABASE);
$sql->connect();
$action = mysql_escape_string($_GET["action"]);
$newsHeader = $_POST["news_header"];
$newsTeaser = $_POST["news_teaser"];
$newsPicture = $_FILES["news_picture"];
$newsArticle = $_POST["news_article"];
$newsCategoryId = $_POST["news_cat_select"];
function makeThumbnail($path, $filename, $new_width, $new_height){
$staticThumbFolder = $_SERVER["DOCUMENT_ROOT"]."gfx/images/article";
$staticExtension = ".jpg";
list($old_width, $old_height) = getimagesize($path."/".$filename);
$sizes = calculateNewSizes($old_width, $old_height, $new_width, $new_height);
$raw_filename = getRawFilename($filename);
$str = "convert ".$path."/".$filename." -size ".$old_width."x".$old_height." -resize ".$sizes[0]."x".$sizes[1]." ".$staticThumbFolder."/".strtolower($raw_filename).$staticExtension;
exec($str);
$filenameInfos = getFilePathArray($staticThumbFolder."/".strtolower($raw_filename).$staticExtension);
$info[0] = $filenameInfos[0];
$info[1] = $filenameInfos[1];
$info[2] = $sizes[0];
$info[3] = $sizes[1];
return $info;
}
function getRawFilename($filename){
$pos = strpos($filename, ".");
return substr($filename, 0, $pos);
}
function getFilePathArray($fileString){
$split = explode("/", $fileString);
$info[1] = end($split);
unset($split[count($split)-1]);
$info[0] = implode("/",$split);
return $info;
}
function stripStaticPrefix($filepath){
return substr($filepath, 20, strlen($filepath));
}
function calculateNewSizes($old_width, $old_height, $new_width, $new_height){
if($old_width > $old_height){
$ratio = $old_height/$old_width;
$x[0] = $new_width;
$x[1] = round($new_height*$ratio);
}
elseif($old_width < $old_height){
$ratio = $old_width/$old_height;
$x[0] = round($new_width*$ratio);
$x[1] = $new_height;
}
else{
$x[0] = $new_width;
$x[1] = $new_height;
}
return $x;
}
if($action == "save_news"){
// Create teaser, if not applied
if($newsTeaser == ""){
$newsTeaser = substr($newsArticle, 0, 100)."...";
}
// Temp path and name for the picture uploaded
$tmp_dist = $_SERVER["DOCUMENT_ROOT"]."admin/gfx/tmp/".$newsPicture["name"];
// Upload temp picture to temp dir
if(!move_uploaded_file($newsPicture["tmp_name"], $tmp_dist)){
die("Ikke uploadet");
}
// Split path and filename to array
$pathFile = getFilePathArray($tmp_dist);
// Make thumbnail from uploaded file
$info = makeThumbnail($pathFile[0], $pathFile[1], 250, 250);
// Set the time of the news
$newsTime = time();
// Insert file into DB
$insertFile = mysql_query("
INSERT INTO
t_file(
c_filename,
c_path,
c_width,
c_height
)
VALUES(
'".$info[1]."',
'".stripStaticPrefix($info[0])."',
'".$info[2]."',
'".$info[3]."'
)
");
// Get fileid
$newsFileId = mysql_insert_id();
// Insert news, with fileid
$insertNews = mysql_query("
INSERT INTO
t_news(
c_createdate,
c_header,
c_teaser,
c_article,
c_file_id
)
VALUES(
'".mysql_escape_string($newsTime)."',
'".mysql_escape_string($newsHeader)."',
'".mysql_escape_string($newsTeaser)."',
'".mysql_escape_string($newsArticle)."',
'".mysql_escape_string($newsFileId)."'
)"
);
// Get newsid
$newsArticleId = mysql_insert_id();
// Insert category, with newsid
$insertCategoryId = mysql_query("
INSERT INTO
t_news_category_crossfield(
c_news_id,
c_news_category_id
)
VALUES(
'".mysql_escape_string($newsArticleId)."',
'".mysql_escape_string($newsCategoryId)."'
)"
);
// Delete temppicture
@unlink($tmp_dist);
}
// Redirect to "insert news" page
//header("location: ../news.php");
?>
Koden er jo meget straightforward, så jeg kan ikke lige se, hvad der skulle være i vejen.
