Avatar billede dab93 Nybegynder
15. august 2011 - 21:24 Der er 4 kommentarer

Crop billede med jQuery, PHP og html

Hej eksperter!

Jeg har i forvejen et oprettet spørgsmål (på udvikleren.dk) omkring en crop funktion af et billede. Det her er bare en ny udgave, og virker næsten. Problemet er bare at den ikke sender thumb billedet op til databasen, kun det originale. Og thumb billedet gemmer ikke de rigtig koordinationer. Den gemmer et billede af det originale billede, bare med koordinationer der passer til øverst til venstre, og 100 pixel i højde og bredde. Den skal gemme billedet som man har markeret det.

PHP kode

<?php
session_start();
        ob_start();

      include('includes/db_connect.php');

$projectID = $_POST["projectID"];

$path = "../images/portfolie/";
$valid_formats = array("jpg", "png", "gif", "bmp");
if(isset($_POST['submit']))
{
$name = $_FILES['photoimg']['name'];
$size = $_FILES['photoimg']['size'];
if(strlen($name))
{
list($txt, $ext) = explode(".", $name);
if(in_array($ext,$valid_formats) && $size<(1280*1024))
{
$actual_image_name = time().substr($txt, 5).".".$ext;
$tmp = $_FILES['photoimg']['tmp_name'];
if(move_uploaded_file($tmp, $path.$actual_image_name))
{
mysql_query("UPDATE projects SET imgsrc='$actual_image_name' WHERE projectID='$projectID' ");
$image="<h1>Please drag on the image</h1><img src='../images/portfolie/".$actual_image_name."' id=\"photo\" height=\"300\" width=\"300\" ";
}
else
echo "failed";
}
else
echo "Invalid file formats..!";
}
else
echo "Please select image..!";
}
?>


JScript kode

function getSizes(im,obj)
{
var x_axis = obj.x1;
var x2_axis = obj.x2;
var y_axis = obj.y1;
var y2_axis = obj.y2;
var thumb_width = obj.width;
var thumb_height = obj.height;
if(thumb_width > 0)
{
if(confirm("Do you want to save image..!"))
{
$.ajax({
type:"GET",
url:"ajax_image.php?t=ajax&img="+$("#image_name").val()+"&w="+
thumb_width+"&h="+thumb_height+"&x1="+x_axis+"&y1="+y_axis,
cache:false,
success:function(rsponse)
{
$("#cropimage").hide();
$("#thumbs").html("");
$("#thumbs").html("<img src='../images/portfolie/"+rsponse+"' />");
}
});
}
}
else
alert("Please select portion..!");
}
$(document).ready(function ()
{
$('img#photo').imgAreaSelect({
aspectRatio: '1:1',
onSelectEnd: getSizes
});
});


HTML kode

<?php echo $image; ?>
<div id="thumbs" ></div>
<div >
<form id="cropimage" method="post" enctype="multipart/form-data">
Upload your image <input type="file" name="photoimg" id="photoimg" />
<input type="hidden" name="image_name" id="image_name" value="<?php echo($actual_image_name)?>" /><br /><br />
<select name="projectID">
<?php
$GetProjects = mysql_query("SELECT * FROM projects ORDER BY id DESC");
while($GetProjectsRow = mysql_fetch_assoc($GetProjects)) {
?>
<option value="<?php echo $GetProjectsRow["projectID"]; ?>"><?php echo $GetProjectsRow["title"]; ?></option>
<?php } ?>
</select>
<input type="submit" name="submit" value="Submit" />
</form>


ajax-image.php

PHP kode

<?php
include('includes/db_connect.php');
session_start();
$projectID = $_POST["projectID"];
$t_width = 100;    // Maximum thumbnail width
$t_height = 100;    // Maximum thumbnail height
$new_name = "small".time().".jpg"; // Thumbnail image name
$path = "../images/portfolie/";
if(isset($_GET['t']) and $_GET['t'] == "ajax")
    {
        extract($_GET);
        $ratio = ($t_width/$w);
        $nw = ceil($w * $ratio);
        $nh = ceil($h * $ratio);
        $nimg = imagecreatetruecolor($nw,$nh);
        $im_src = imagecreatefromjpeg($path.$img);
        imagecopyresampled($nimg,$im_src,0,0,$x1,$y1,$nw,$nh,$w,$h);
        imagejpeg($nimg,$path.$new_name,90);
        mysql_query("UPDATE projects SET thumb_imgsrc='$new_name' WHERE projectID='$projectID' ");
        echo $new_name."?".time();
        exit;
    }
   
    ?>


Jeg håber at nogen kan hjælpe mig  :)
Avatar billede olebole Juniormester
15. august 2011 - 22:33 #1
<ole>

For at starte et sted: Har du prøvet at logge, hvilke data ajax-image.php modtager? Ellers tag et kik på fopen - og skriv de modtagne data i en logfil på serveren

/mvh
</bole>
Avatar billede dab93 Nybegynder
15. august 2011 - 22:49 #2
Hej Ole.
Hvordan ville du tjekke om hvilke data ajax-image.php modtager?
Avatar billede olebole Juniormester
15. august 2011 - 23:29 #3
F.eks. sådan:


    extract($_GET);
  /* Logging Start */
    $strLog = '$w = '.$w."\n".'$h = '.$h."\n".'$x1 = '.$x1."\n".'$y1 = '.$y1;
    $fp = fopen('log.txt', 'w');
    fwrite($fp, $strLog);
    fclose($fp);
  /* Logging End */
    $ratio = ($t_width/$w);

Avatar billede dab93 Nybegynder
16. august 2011 - 05:59 #4
@Ole
Jeg fik det her i log.txt
$w = 105
$h = 105
$x1 = 160
$y1 = 120
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester