【问题标题】:How to resize png and gif image and store transparent background using php?如何使用 php 调整 png 和 gif 图像的大小并存储透明背景?
【发布时间】:2015-09-22 05:59:35
【问题描述】:

如何使用 php 调整 pnggif 图像的大小并存储透明背景?

这是我的代码

它将调整图像大小为200x200 px 并上传到PIE 目录。它的工作很好。 但是当与pnggif 图像(透明背景)一起使用时。它将bg更改为黑色。调整图片大小后如何处理透明背景?

<form name="setup" method="post" ENCTYPE = "multipart/form-data" onsubmit="return checkform(this);">
<input type="file" name="offer_image_1" id="offer_image_1">
<input type="submit" name="submit" value="Next">
</form>

<?php
include("connect.php");
if(isset($_POST["submit"]))
{

#####  This function will proportionally resize image ##### 
function normal_resize_image($source_thumbnail, $destination_thumbnail, $image_type_thumbnail, $max_size_thumbnail, $image_width_thumbnail, $image_height_thumbnail, $quality_thumbnail){

    if($image_width_thumbnail <= 0 || $image_height_thumbnail <= 0){return false;} //return false if nothing to resize

    //do not resize if image is smaller than max size
    if($image_width_thumbnail <= $max_size_thumbnail && $image_height_thumbnail <= $max_size_thumbnail){
        if(save_image($source_thumbnail, $destination_thumbnail, $image_type_thumbnail, $quality_thumbnail)){
            return true;
        }
    }

    //Construct a proportional size of new image
    $image_scale_thumbnail = min($max_size_thumbnail/$image_width_thumbnail, $max_size_thumbnail/$image_height_thumbnail);
    $new_width_thumbnail = ceil($image_scale_thumbnail * $image_width_thumbnail);
    $new_height_thumbnail = ceil($image_scale_thumbnail * $image_height_thumbnail);

    $new_canvas_thumbnail = imagecreatetruecolor( $new_width_thumbnail, $new_height_thumbnail ); //Create a new true color image

    //Copy and resize part of an image with resampling
    if(imagecopyresampled($new_canvas_thumbnail, $source_thumbnail, 0, 0, 0, 0, $new_width_thumbnail, $new_height_thumbnail, $image_width_thumbnail, $image_height_thumbnail)){
        save_image($new_canvas_thumbnail, $destination_thumbnail, $image_type_thumbnail, $quality_thumbnail); //save resized image
    }

    return true;
}

##### This function corps image to create exact square, no matter what its original size! ######
function crop_image_square($source_thumbnail, $destination_thumbnail, $image_type_thumbnail, $square_size_thumbnail, $image_width_thumbnail, $image_height_thumbnail, $quality_thumbnail){
    if($image_width_thumbnail <= 0 || $image_height_thumbnail <= 0){return false;} //return false if nothing to resize

    if( $image_width_thumbnail > $image_height_thumbnail )
    {
        $y_offset_thumbnail = 0;
        $x_offset_thumbnail = ($image_width_thumbnail - $image_height_thumbnail) / 2;
        $s_size_thumbnail   = $image_width_thumbnail - ($x_offset_thumbnail * 2);
    }else{
        $x_offset_thumbnail = 0;
        $y_offset_thumbnail = ($image_height_thumbnail - $image_width_thumbnail) / 2;
        $s_size_thumbnail = $image_height_thumbnail - ($y_offset_thumbnail * 2);
    }
    $new_canvas_thumbnail = imagecreatetruecolor( $square_size_thumbnail, $square_size_thumbnail); //Create a new true color image

    //Copy and resize part of an image with resampling
    if(imagecopyresampled($new_canvas_thumbnail, $source_thumbnail, 0, 0, $x_offset_thumbnail, $y_offset_thumbnail, $square_size_thumbnail, $square_size_thumbnail, $s_size_thumbnail, $s_size_thumbnail)){
        save_image($new_canvas_thumbnail, $destination_thumbnail, $image_type_thumbnail, $quality_thumbnail);
    }

    return true;
}

##### Saves image resource to file ##### 
function save_image($source_thumbnail, $destination_thumbnail, $image_type_thumbnail, $quality_thumbnail){
    switch(strtolower($image_type_thumbnail)){//determine mime type
        case 'image/png': 
            imagepng($source_thumbnail, $destination_thumbnail); return true; //save png file
            break;
        case 'image/gif': 
            imagegif($source_thumbnail, $destination_thumbnail); return true; //save gif file
            break;          
        case 'image/jpeg': case 'image/pjpeg': 
            imagejpeg($source_thumbnail, $destination_thumbnail, $quality_thumbnail); return true; //save jpeg file
            break;
        default: return false;
    }
}




        $thumb_square_size_thumbnail    = 200; //Thumbnails will be cropped to 200x200 pixels
        $max_image_size_thumbnail       = 5000; //Maximum image size (height and width)
        $thumb_prefix_thumbnail     = "img_"; //Normal thumb Prefix
        $destination_folder_thumbnail   = 'PIE/'; //upload directory ends with / (slash)
        $jpeg_quality_thumbnail     = 100; //jpeg quality


        // Start ตรวจสอบ และ upload รูปภาพ //
        //uploaded file info we need to proceed
        $image_type_thumbnail_check = $_FILES['offer_image_1']['type']; //file type
        $image_name_thumbnail = $_FILES['offer_image_1']['name']; //file name
        $image_size_thumbnail = $_FILES['offer_image_1']['size']; //file size
        $image_temp_thumbnail = $_FILES['offer_image_1']['tmp_name']; //file temp
        $image_size_info_thumbnail = getimagesize($image_temp_thumbnail); //get image size



                                        if($image_size_info_thumbnail)
                                            {
                                                $image_width_thumbnail = $image_size_info_thumbnail[0]; //image width
                                                $image_height_thumbnail = $image_size_info_thumbnail[1]; //image height
                                                $image_type_thumbnail = $image_size_info_thumbnail['mime']; //image type





                                                //switch statement below checks allowed image type
                                                //as well as creates new image from given file
                                                switch($image_type_thumbnail)
                                                    {
                                                case 'image/png':
                                                        $image_res_thumbnail =  imagecreatefrompng($image_temp_thumbnail); break;
                                                        case 'image/gif':
                                            $image_res_thumbnail =  imagecreatefromgif($image_temp_thumbnail); break;
                                                        case 'image/jpeg': case 'image/pjpeg':
                                                        $image_res_thumbnail = imagecreatefromjpeg($image_temp_thumbnail); break;
                                                        default:
                                                        $image_res_thumbnail = false;
                                                    }
                                            if($image_res_thumbnail)
                                                    {
                                                //Get file extension and name to construct new file name 
                                                $image_info_thumbnail = pathinfo($image_name_thumbnail);
                                                $image_extension_thumbnail = strtolower($image_info_thumbnail["extension"]); //image extension
                                                $image_name_only_thumbnail = strtolower($image_info_thumbnail["filename"]);//file name only, no extension

                                                //create a random name for new image (Eg: fileName_293749.jpg);
                                                        $new_file_name_thumbnail = 'xxxxxxxxx.'.$image_extension_thumbnail;

                                                //folder path to save resized images and thumbnails
                                                $thumb_save_folder_thumbnail    = $destination_folder_thumbnail . $thumb_prefix_thumbnail . $new_file_name_thumbnail; 
                                                $image_save_folder_thumbnail    = $destination_folder_thumbnail . $new_file_name_thumbnail;




                                                //call normal_resize_image() function to proportionally resize image
if(crop_image_square($image_res_thumbnail, $thumb_save_folder_thumbnail, $image_type_thumbnail, $thumb_square_size_thumbnail, $image_width_thumbnail, $image_height_thumbnail, $jpeg_quality_thumbnail))
                                                            {
                                                                //echo "Success";
                                                            }

                                                imagedestroy($image_res_thumbnail); //freeup memory
                                                    }

                                                $image_path = $destination_folder_thumbnail.''.$thumb_prefix_thumbnail.''.$new_file_name_thumbnail;
                                            }


    }
?>

【问题讨论】:

标签: php image png gif image-resizing


【解决方案1】:

我使用了一个库来处理图像。就像创建照片库,以多种方式转换、调整大小和处理上传的图像、应用效果、添加标签、水印和反射以及其他图像编辑功能......here

Demo here

【讨论】:

    【解决方案2】:

    您可以直接使用 html img 标签来处理图片,也可以通过 javascript 来操作它的样式...

    <div class="row">
        <div class="col-md-4">
            <h4 class="heading">Upload Patient's Photo :-</h4>
        </div>
        <div class="col-md-4">
            <input type="file" class="form-control" name="patientpic" id="patientpic" onchange="readURL(this)"/>
        </div>
    </div>  
    <script>
        function readURL(input) {
           if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) 
            {
                $('#patientimg').attr('src', e.target.result);
            }
             reader.readAsDataURL(input.files[0]);
            }
            }
    </script>                               
    </div>
    <div class="col-md-2 col-sm-12">
    <div class="thumbnail">
      <img src="#" alt="..." class="img-responsive img-rounded" id="patientimg" style="height:200px;width:200px;background-color:transparent;">
    </div>
    </div>  
    

    同样,这也可以通过 php 在 php 字符串中使用此代码来完成。

    【讨论】:

      猜你喜欢
      • 2014-06-03
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 2012-10-15
      • 2012-05-31
      • 2020-12-20
      • 1970-01-01
      • 2012-08-30
      相关资源
      最近更新 更多