2010-02-11 6 views
0

J'ai ce code de recadrage d'image que lorsque l'image est recadrée un arrière-plan noir est ajouté dans l'image. comment puis-je l'enlever? grâcerecadrage d'image noir bg

$fldcategory = $_POST['category']; 
$flname = $_FILES['upload']['name']; 
$img_src = $_FILES['upload']['tmp_name']; 
$thumb = "uploads/" . $flname; 
$title = $_POST['title']; 

// Open image 
$img = imagecreatefromjpeg($img_src); 

// Store image width and height 
list($img_width, $img_height) = getimagesize($img_src); 

$width = '800'; 
$height = '600'; 

// Create the new image 
$new_img = imagecreatetruecolor($width, $height); 

// Calculate stuff and resize image accordingly 
if (($width/$img_width) < ($height/$img_height)) { 
    $new_width = $width; 
    $new_height = ($width/$img_width) * $img_height; 
    $new_x = 0; 
    $new_y = ($height - $new_height)/2; 
} else { 
    $new_width = ($height/$img_height) * $img_width; 
    $new_height = $height; 
    $new_x = ($width - $new_width)/2; 
    $new_y = 0; 
} 

imagecopyresampled($new_img, $img, $new_x, $new_y, 0, 0, 
    $new_width, $new_height, $img_width, $img_height); 

// Save thumbnail 
if (is_writeable(dirname($thumb))) { 
    imagejpeg($new_img, $thumb, 100); 
} 

// Free up resources 
imagedestroy($new_img); 
imagedestroy($img); 
+0

S'il vous plaît montrer un exemple ou le décrire plus exactement. –

+0

Désolé pour offtopic, mais je vous conseille vraiment d'utiliser ImageMagick (en particulier en utilisant exec) au lieu de GD. – Kirzilla

Répondre

0

Jetez un oeil à ces fonctions:

Vous pouvez définir une couleur transparente avec la première fonction (vous devez attribuer cette couleur) . Remplissez la nouvelle image avec la couleur transparente avant de peindre la version redimensionnée dessus. Cela rendra votre bg noir invisible et ne recadra pas l'image à la bonne taille. (Ceci est seulement une supposition de ce qui pourrait vous aider)

+0

Ces liens ne peuvent pas être trouvés. – WilliamK