另一个imagejpeg问题 [英] another imagejpeg question
问题描述
大家好,
我试图使用我在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屋!