0

によって生成された黒い画像の背景をimagecreatetruecolorimagecopyresampled渡すと、パラメーター 1 としてエラーが発生するのimagecopyresampledはリソースであると予想されますが、整数が指定されます。

これはgif画像のみで発生しています。また、imagecolortransparentアニメーション化されたものが黒い背景で静的に表示されないようにgif​​に使用していますが、渡されたときにもimagecopyresampled同じエラーが発生します。

なしimagecolortransparent:

function resizeImageGIF($image,$width,$height,$scale) {
    $newImageWidth = ceil($width * $scale);
    $newImageHeight = ceil($height * $scale);
    $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
    $source = imagecreatefromgif($image);
    imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
    imagegif($newImage,$image);
    chmod($image, 0777);
    return $image;
}

上記は、背景が黒い静的 gif を生成し、パラメーター 1 で指定された整数の同じ PHP エラーを返します。

imagecolortransparent:

function resizeImageGIF($image,$width,$height,$scale) {
    $newImageWidth = ceil($width * $scale);
    $newImageHeight = ceil($height * $scale);
    $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
    $black=imagecolorallocate($newImage,0,0,0);
    $newImageTransparent = imagecolortransparent($newImage,$black);
    $source = imagecreatefromgif($image);
    imagecopyresampled($newImageTransparent,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
    imagegif($newImageTransparent,$image);
    chmod($image, 0777);
    return $image;
} 

これはアニメーションgifを生成しますが、それでも上記のエラーが発生し、固定幅のコンテナから画像が飛び出すため、画像を拡大縮小しません。

4

1 に答える 1

1

このスクリプトとこのスクリプトが私のために働いていることを試してください

$size = 200; // the thumbnail height
$filedir = 'uploads/'; // the directory for the original image
$thumbdir = 'uploads/'; // the directory for the thumbnail image
$prefix = 'small0_'; // the prefix to be added to the original name
$maxfile = '2000000';
$mode = '0666';
$rnd_1 = rand(11111,99999); 

$userfile_name= $rnd_1.'_'.$_FILES['image']["name"];
$userfile_tmp = $_FILES['image']['tmp_name'];
$userfile_size = $_FILES['image']['size'];
$userfile_type = $_FILES['image']['type'];
if (isset($_FILES['image']['name'])) 
{
$prod_img = $filedir.$userfile_name;
$prod_img_thumb = $thumbdir.$prefix.$userfile_name;
move_uploaded_file($userfile_tmp, $prod_img);
chmod ($prod_img, octdec($mode));
$sizes = getimagesize($prod_img);
$aspect_ratio = $sizes[1]/$sizes[0]; 
if ($sizes[1] <= $size)
{

$new_width = '500';
$new_height = '500';
}else{

$new_width = '500';
$new_height = '500';
}
$destimg=ImageCreateTrueColor($new_width,$new_height)
or die('Problem In Creating image');

$srcimg=ImageCreateFromJPEG($prod_img)
or $srcimg=ImageCreateFromPNG($prod_img)
or $srcimg=ImageCreateFromGIF($prod_img)
or die('Problem In opening Source Image0');
if(function_exists('imagecopyresampled'))
{
imagecopyresampled($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg))
or die('Problem In resizing');
}else{
Imagecopyresized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg))
or die('Problem In resizing');
}
ImageJPEG($destimg,$prod_img_thumb,90)
or die('Problem In saving');
}
imagesavealpha($prod_img_thumb, true);
//setting completely transparent color
$transparent = imagecolorallocatealpha($prod_img_thumb, 0, 0, 0, 127);
//filling created image with transparent color
imagefill($prod_img_thumb, 0, 0, $transparent);
imagepng($prod_img_thumb);
}
于 2013-03-12T07:59:48.360 に答える