2012-12-11 20 views
13

Değişken genişlikli & yüksekliğine sahip görüntüleri kırpmak zorunda olan bir uygulama sahibim. ama ben var benim kodunda php gd (Createimagefromjpeg) işleviJcrop ile kırpma ve PHP GD ile kaydederken değişken genişlik ve yükseklik nasıl elde edilir GD

ile bunun nasıl bilmiyorum:

$targ_w = 400; 
$targ_h = 400; 

Bu kırpılmış görüntü her zaman bu genişlik ve yüksekliğini almak anlamına gelir. istediğim bu değil. istediğim, bir şekilde görüntü kırpma ve ben bu resimde gibi ekin alanına adresten seçilmiş gibi kırpmak: resimde ben bu almak gibi ben, bu görüntüyü kırpmak şimdi

cropped image

:

ı bir genişlik ve yükseklik vermek zorunda olduğundan

square image created

bir kare görüntüdür. ama ben kırptığım her görüntüde boyutları farklı.

Bunu yapmak için bir yol var mı (değişkenler, kimlik vb.)?

Teşekkür: D

DÜZENLEME: kırpmak için

<!DOCTYPE> 
<html> 

<head> 
    <title>Het Vergeet-mij-nietje</title> 
    <link href="style/default.css" REL="stylesheet" TYPE="text/css"> 
    <script type="text/javascript" src="js/showfunctie.js"></script> 
    <script src="js/jquery.min.js"></script> 
    <script src="js/jquery.Jcrop.min.js"></script> 
    <link rel="stylesheet" href="css/jquery.Jcrop.css" type="text/css" /> 
</head> 

<body> 
<center> 
    <div id="title"> 
    <h1><a href="index.php" id="link1">Het "Vergeet-mij-nietje"</a></h1> 
    <h3>Upload Systeem</h3> 
    </div> 

<div id="content1"> 
    <p><b>Upload hier een afbeelding en druk op upload om hem vervolgens te kunnen bijsnijden.</b></p> 
    <form action="uploaded.php" method="post" enctype="multipart/form-data"> 
     <input type="file" name="filename" /> 
     <input type="submit" value="Upload" /> 
    </form> 
<br /> <br /> 

<p align="left"><b>Bekijk hier de gecropte en geuploadde foto's</b></p> 


    <p class="album"> 
     <?php include 'album.php';?> 
    </p> 

</div> 

<div id="copyright"> 
Copyright &copy; Kees Sonnema & Jan Beetsma 
</div> 

</body> 
</html> 

Benim kod: resim yüklemek için

<!DOCTYPE> 
<html> 
<head> 
    <title>Cropped Image</title> 
</head> 
<body> 

<?php 
SESSION_start(); 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
$targ_w = 400; 
$targ_h = 400; 
$jpeg_quality = 100; 

$src = $_SESSION['target_path']; 
$img_r = imagecreatefromjpeg($src); 
$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'], 
$targ_w,$targ_h,$_POST['w'],$_POST['h']); 

header('Content-type: image/jpeg'); 
imagejpeg($dst_r, 'data/uploads/' . basename($src)); 
header('Location:'.$src); 
exit; 
} 

?> 

</body> 
</html> 

Benim kod: my kod kırpılan görüntüyü oluşturmak için JCrop:

<html> 
    <head> 
    <script src="js/jquery-1.7.2.min.js"></script> 
    <script src="js/lightbox.js"></script> 
    <link href="style/css/lightbox.css" rel="stylesheet" /> 
    </head> 
<body> 

<?php 

$page = $_SERVER['PHP_SELF']; 

//settings 
$column = 6; 

// directories 
$base = "data"; 
$uploads = "thumbs"; 

// get album 
$get_album = $_GET['album']; 

if (!$get_album) 
{ 
    echo "<b>Selecteer een album:</b><p />"; 
    $handle = opendir($base); 
    while (($file = readdir($handle))!==FALSE) 
    { 
     if (is_dir($base."/".$file) && $file != "." && $file !=".." && $file !="$uploads") 
     { 
      echo "<a href='$page?album=$file'>$file</a><br />"; 
     } 
    } 
    closedir($handle); 
} 

else 
{ 
    if (!is_dir($base."/".$get_album) || strstr($get_album,".")!=NULL || strstr($get_album,"/")!=NULL || strstr($get_album,"\\")!=NULL) 
    { 
     echo "Dit album bestaat niet."; 
    } 
    else 
    { 
     $x = 0; 
     echo "<b>$get_album</b><p />"; 
     $handle = opendir($base."/".$get_album); 
     while (($file = readdir($handle)) !== FALSE) 
     { 
      if ($file != "." && $file != "..") 
      { 
       echo "<table style='display:inline;'><tr><td><a href='$base/$get_album/$file' rel='lightbox'><img src='$base/$get_album/$file' height='150' width='100'></a></td></tr></table>"; 
       $x++; 
      } 
       if ($x==$column) 
       { 
        echo "<br />"; 
        $x = 0; 
       } 
      } 
    } 
    closedir($handle); 

    echo "<p /><a href='$page'>Terug Naar Albums</a>"; 

} 

?> 

</body> 
</html> 

cevap

9

Değişim

$dst_r = imagecreatetruecolor($_POST['w'], $_POST['h']); 

için

$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 

satır => Bu seçilen alana sahip yeni bir resim yaratacak, size $ targ_w $ ve targ_h değişkenleri silebilirsiniz.

Ve bunun deneyebilirsiniz

imagecopy(
    $dst_r, $img_r, 
    0, 0, $_POST['x'], $_POST['y'], 
    $_POST['w'], $_POST['h'] 
); 
+0

için

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'], $targ_w,$targ_h,$_POST['w'],$_POST['h']); 

gelen hattını değiştirin. ve sizin için kodumu yukarıda yazacağım :) –

+0

Bu kodu işe alamıyorum. kırpılmış görüntüyü kaydetmiyor/göstermiyor. Sadece boş bir sayfa verir. –

+0

Kırpılan görüntü oluşturulur mu? Son 2 satırı yorumlayın ve nihai hatayı göstermek için komut dosyasının en üstünde error_reporting (-1) ekleyin. –

İlgili konular