白色背景调整图像
问题描述:
我试图修改此脚本:http://net.tutsplus.com/tutorials/php/image-resizing-made-easy-with-php/白色背景调整图像
我希望得到一个(使用裁剪选项时),白色背景,而不是黑色的,因为它是现在。我的场景是这样的:
当我调整图像的大小时,我会在底部(1px)得到一个我不想要的黑色边框。我希望这是白色的。
我已经看过这个线程,并试图执行它的脚本:How do I fill white background while resize image
但它似乎并不工作。这里是我的调整大小类的代码:
public function resizeImage($newWidth, $newHeight, $option="auto")
{
// *** Get optimal width and height - based on $option
$optionArray = $this->getDimensions($newWidth, $newHeight, $option);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
// *** Resample - create image canvas of x, y size
$this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
// MY EDIT STARTS HERE
$backgroundColor = imagecolorallocate($this->imageResized, 255, 255, 255);
imagefill($this->imageResized, 0, 0, $backgroundColor);
// AND STOPS HERE
imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);
// *** if option is 'crop', then crop too
if ($option == 'crop') {
$this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
}
}
我在做什么错,我应该改变什么?
答
Lil在赶时间,所以不能写出确切的代码,但我也试图做你喜欢的事情。以下是我的代码。我发表了评论,以方便您。它必须帮助你,但请确认。
在该代码中,我创建一个趋势图像(组在单个图像的多个图像的),其具有白色背景的多个图像
总之,我一个PNG图像作为白色背景。
<?php
session_start();
include_once("../dbfunction.php");
$tid=0;
if(isset($_REQUEST) && isset($_REQUEST['tid'])){
$tid=$_REQUEST['tid'];
}else{
echo "Trend id not defined";
}
//This return SQL result. Multiple rows with images name, x1, y1 as initial position and x2,y2 as width height
$data=getTrendImages($tid);
//This is path of background image. For me, background image is pure white png image (480x480)
$trendsbgurl= OS_PATH."image".DIRECTORY_SEPARATOR."trends_background.png";
//Get image in PHP
$trendsbg = @imagecreatefrompng($trendsbgurl);
//Loop to get images and put them on background
for($i=0;$i<count($data);$i++){
$imgname=$data[$i]['image_name'];
$imgleft=$data[$i]['position_x1'];
$imgtop=$data[$i]['position_y1'];
$imgwidth=$data[$i]['position_x2'];
$imgheight=$data[$i]['position_y2'];
//Path of source image
$imgpath=OS_PATH."original".DIRECTORY_SEPARATOR.$imgname;
//Explode image name to get file extension. I'd to support png, gif and jpeg images
$file=explode(".",$imgname);
$ext=$file[1];
//If source file exist
if(file_exists($imgpath)){
//Create source image in PHP
$image=null;
if($ext=='jpg' || $ext=='jpeg'){
$image = @imagecreatefromjpeg($imgpath);
}else if($ext=='png'){
$image = @imagecreatefrompng($imgpath);
}else if($ext=='gif'){
$image = @imagecreatefromgif($imgpath);
}else{
exit;
}
$colorTransparent = @imagecolorat($image, 0, 0);
//GEt source image size
$imgsize=getimagesize($imgpath);
//Copy source on background
imagecopyresampled($trendsbg, $image, $imgleft, $imgtop, 0, 0, $imgwidth, $imgheight, $imgsize[0], $imgsize[1]);
}else{
}
}
//I need to save image on disk. You can do whatever you need to do with $trendsbg
imagejpeg($trendsbg,OS_PATH."trendimages".DIRECTORY_SEPARATOR."t_".$tid.".jpg",100);
+0
感谢您的回答。但是,这不正是我在评论之间做的事情:// *** Resample - 创建x,y大小的图像画布并// //在此停止?我参考了编辑过的版本评论,该评论在“===============”之前结束。 – Fredrik 2012-04-08 10:24:11
而且没有css? – 2012-04-08 12:29:19
没有设置CSS边框。这只是一些图像获取这个黑底部边界,其他人没有。这是 - 我认为 - 因为他们(没有底部黑色边框)有另一个宽度/高度比例,那么他们谁得到底部边框。 – Fredrik 2012-04-08 13:15:20