1

jquery / php プラグインを使用して、画像のアップロードとトリミングを行っています。透明なgif/pngの黒い背景を除いて、すべて正常に機能します。透明感を保ちたい。私は他の投稿を読み、これが以前に出てきたことに気付きましたが、以前の修正をコードに適用する方法を完全には理解していません。

            <?php
            ##########################################################################################################
            # IMAGE FUNCTIONS                                                                                        #
            # You do not need to alter these functions                                                               #
            ##########################################################################################################
            function resizeImage($image,$width,$height,$scale) {
                list($imagewidth, $imageheight, $imageType) = getimagesize($image);
                $imageType = image_type_to_mime_type($imageType);
                $newImageWidth = ceil($width * $scale);
                $newImageHeight = ceil($height * $scale);
                $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
                switch($imageType) {
                    case "image/gif":
                        $source=imagecreatefromgif($image); 
                        break;
                    case "image/pjpeg":
                    case "image/jpeg":
                    case "image/jpg":
                        $source=imagecreatefromjpeg($image); 
                        break;
                    case "image/png":
                    case "image/x-png":
                        $source=imagecreatefrompng($image); 
                        break;
                }
                imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);

                switch($imageType) {
                    case "image/gif":
                        imagegif($newImage,$image); 
                        break;
                    case "image/pjpeg":
                    case "image/jpeg":
                    case "image/jpg":
                        imagejpeg($newImage,$image,90); 
                        break;
                    case "image/png":
                    case "image/x-png":
                        imagepng($newImage,$image);  
                        break;
                }

                chmod($image, 0777);
                return $image;
            }

            ?>
4

1 に答える 1

2

追加することで進歩しました

            imagealphablending($newImage, true); 
            // Allocate a transparent color and fill the new image with it. 
            // Without this the image will have a black background instead of being transparent.
            $transparent = imagecolorallocatealpha( $newImage, 0, 0, 0, 127 ); 
            imagefill( $newImage, 0, 0, $transparent ); 
                imagesavealpha($newImage,true); 

行の下 $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);

現在はpngで機能しますが、gifでは機能しませんか???

于 2012-08-20T15:28:30.603 に答える