另一个imagejpeg问题 [英] another imagejpeg question

查看:62
本文介绍了另一个imagejpeg问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我试图使用我在php.net上找到的代码来创建一个缩略图
来自图像的
,但它只显示一个黑色方块。

任何人都可以告诉我我做错了什么?


< ;?


函数ImageCopyResampleBicubic(& $ dst,& $ src,$ dstx,$ dsty,$ srcx,$ srcy,

$ w,$ h,$ zoomX,$ zoomY =''''){

if(!$ zoomY)$ zoomY = $ zoomX;

$ palsize = ImageColorsTotal($ src);

for($ i = 0; $ i< ; $ palsize; $ i ++){

$ colors = ImageColorsForIndex($ src,$ i);

ImageColorAllocate($ dst,$ colors [''red''] ,$ colors [''green''],

$ colors [''blue'']);

}


$ zoomX2 =(int)($ zoomX / 2);

$ zoomY2 =(int)($ zoomY / 2);


$ dstX = imagesx($ dst);

$ dstY = imagesy($ dst);

$ srcX = imagesx($ src);

$ srcY = imagesy($ src);


for($ j = 0; $ j<($ h- $ dsty); $ j ++) {

$ sY =(int)($ j * $ zoomY)+ $ srcy;

$ y13 = $ sY + $ zoomY2;

$ dY = $ j + $ dsty;


if(($ sY> = $ srcY)或($ dY> = $ dstY)或($ y13> = $ srcY ))休息1;


for($ i = 0; $ I≤($ $ W- dstx); $ i ++){

$ sX =(int)($ i * $ zoomX)+ $ srcx;

$ x34 = $ sX + $ zoomX2;

$ dX = $ i + $ dstx;


if(($ sX> = $ srcX)或($ dX> = $ dstX)或($ x34> = $ srcX))

休息1;


$ c1 = ImageColorsForIndex($ src,ImageColorAt($ src,$ sX,
$ b) $ b $ y13));

$ c2 = ImageColorsForIndex($ src,ImageColorAt($ src,$ sX,

$ sY));

$ c3 = ImageColorsForIndex($ src,ImageColorAt($ src,$ x34,

$ y13));

$ c4 = ImageColorsForIndex($ src,ImageColorAt($ src,$ x34,

$ sY));


$ r =($ c1 [''red''] + $ c2 [''red ''] + $ c3 [''red''] + $ c4 [''red''])/ 4;

$ g =($ c1 [''green''] + $ c2 [''green''] + $ c3 [''green''] + $ c4 [''green''])/ 4;

$ b =($ c1 [''blue ''] + $ c2 [''blue''] + $ c3 [''blue''] + $ c4 [''blue''])/ 4;


ImageSetPixel ($ dst,$ dX,$ dY,ImageColorClosest($ dst,$ r,$ g,

$ b));

}

}

}

header(" content-type:image / jpeg");

$ sourceimg = imagecreatefromjpeg(" temp.jpg");

$ destimg = imagecreate(211,300);

ImageCopyResampleBicubic($ destimg,$ sourceimg,0 ,0,0,0,422,600,211,

300);

imagejpeg($ destimg);

?>


-

解决方案

dst,&


SRC,

dstx,

Hi guys,
Im trying to use this code that I found on php.net to create a thumbnail
from an image but it simply displays a black square.
Anyone can tell me what am I doing wrong?

<?

function ImageCopyResampleBicubic(&$dst, &$src, $dstx, $dsty, $srcx, $srcy,
$w, $h, $zoomX, $zoomY = '''') {
if (!$zoomY) $zoomY = $zoomX;
$palsize = ImageColorsTotal($src);
for ($i = 0; $i<$palsize; $i++) {
$colors = ImageColorsForIndex($src, $i);
ImageColorAllocate($dst, $colors[''red''], $colors[''green''],
$colors[''blue'']);
}

$zoomX2 = (int)($zoomX/2);
$zoomY2 = (int)($zoomY/2);

$dstX = imagesx($dst);
$dstY = imagesy($dst);
$srcX = imagesx($src);
$srcY = imagesy($src);

for ($j = 0; $j<($h-$dsty); $j++) {
$sY = (int)($j*$zoomY)+$srcy;
$y13 = $sY+$zoomY2;
$dY = $j+$dsty;

if (($sY >= $srcY) or ($dY >= $dstY) or ($y13 >= $srcY)) break 1;

for ($i = 0; $i<($w-$dstx); $i++) {
$sX = (int)($i*$zoomX)+$srcx;
$x34 = $sX+$zoomX2;
$dX = $i+$dstx;

if (($sX >= $srcX) or ($dX >= $dstX) or ($x34 >= $srcX))
break 1;

$c1 = ImageColorsForIndex($src, ImageColorAt($src, $sX,
$y13));
$c2 = ImageColorsForIndex($src, ImageColorAt($src, $sX,
$sY));
$c3 = ImageColorsForIndex($src, ImageColorAt($src, $x34,
$y13));
$c4 = ImageColorsForIndex($src, ImageColorAt($src, $x34,
$sY));

$r = ($c1[''red'']+$c2[''red'']+$c3[''red'']+$c4[''red''])/4;
$g = ($c1[''green'']+$c2[''green'']+$c3[''green'']+$c4[''green''])/4;
$b = ($c1[''blue'']+$c2[''blue'']+$c3[''blue'']+$c4[''blue''])/4;

ImageSetPixel($dst, $dX, $dY, ImageColorClosest($dst, $r, $g,
$b));
}
}
}
header ("content-type: image/jpeg");
$sourceimg = imagecreatefromjpeg ("temp.jpg");
$destimg = imagecreate (211, 300);
ImageCopyResampleBicubic($destimg, $sourceimg, 0, 0, 0, 0, 422,600, 211,
300);
imagejpeg ($destimg);
?>

--

解决方案

dst, &


src,


dstx,


这篇关于另一个imagejpeg问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆