2012-12-11 39 views
13

Tôi có một ứng dụng phải cắt ảnh có chiều rộng thay đổi chiều cao &. nhưng tôi không biết làm thế nào để làm điều này với php gd (Createimagefromjpeg) chức năngCách lấy chiều rộng và chiều cao thay đổi khi cắt xén bằng Jcrop và lưu bằng PHP GD

trong mã của tôi có:

$targ_w = 400; 
$targ_h = 400; 

Điều này có nghĩa rằng hình ảnh được cắt sẽ luôn có được chiều rộng và chiều cao này. đó không phải là những gì tôi muốn. tôi muốn, một cách nào đó cắt những hình ảnh và cắt nó như tôi chọn nó ở vùng cắt như trong ảnh này:

cropped image

bây giờ khi tôi cắt hình ảnh đó, như trong hình tôi có được điều này:

square image created

Đây là hình ảnh vuông vì tôi phải cung cấp chiều rộng và chiều cao. nhưng ở mỗi hình ảnh tôi cắt các kích thước khác nhau.

Có cách nào (biến, id, v.v ..) để thực hiện việc này không?

Thanks: D

EDIT: mã của tôi để tạo ra các hình ảnh cắt:

<!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> 

Mã của tôi để tải lên hình ảnh:

<!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> 

Mã của tôi để cắt ảnh với 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> 

Trả lời

9

Thay đổi dòng từ

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

để

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

=> điều này sẽ tạo ra một hình ảnh mới với diện tích được lựa chọn, bạn có thể xóa $ targ_w và $ targ_h biến.

Và có sự thay đổi từ

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

để

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

tôi có thể cố gắng đó. và tôi sẽ đăng mã của tôi ở trên cho bạn :) –

+0

tôi không thể làm cho mã này hoạt động. anh ta không lưu/hiển thị hình ảnh đã cắt. nó chỉ đưa ra một trang trống. –

+0

Hình ảnh đã cắt có được tạo không? Bình luận ra 2 dòng cuối cùng và thêm error_reporting (-1) ở phía trên cùng của kịch bản để hiển thị lỗi cuối cùng. –

Các vấn đề liên quan