Home  >  Article  >  Backend Development  >  Code for php to generate ico files online_PHP tutorial

Code for php to generate ico files online_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:55:02972browse

index.php

Copy code The code is as follows:

$output = "";
if(isset($_GET['action'])&&$_GET['action'] == 'make'){
if(isset($_FILES['upimage']['tmp_name']) && $_FILES['upimage']['tmp_name'] && is_uploaded_file($_FILES['upimage']['tmp_name'])){
if($_FILES['upimage']['type']>210000){
echo "The size of the file you uploaded exceeds the limit and cannot exceed 200K";
exit();
}
$ FILEEXT = Array ("Image/PJPEG", "Image/GIF", "Image/X-PNG"); ], $ FILEEXT)) {
Echo "The file format you uploaded is incorrect only supports JPG, GIF, PNG";
exit ();
}
if ($ im = @imageCreateFrompng ( $_FILES['upimage']['tmp_name']) or $im = @imagecreatefromgif($_FILES['upimage']['tmp_name']) or $im = @imagecreatefromjpeg($_FILES['upimage']['tmp_name '])){
            $imginfo = @getimagesize($_FILES['upimage']['tmp_name']);";
            }
            switch($_POST['size']){
                case 1;
                    $resize_im = @imagecreatetruecolor(16,16);
                    $size = 16;
                    break;
                case 2;
                    $resize_im = @imagecreatetruecolor(32,32);
                    $size = 32;
                    break;
                case 3;
                    $resize_im = @imagecreatetruecolor(48,48);
                    $size = 48;
                    break;
                default;
                    $resize_im = @imagecreatetruecolor(32,32);
                    $size = 32;
                    break;
            }
            imagecopyresampled($resize_im,$im,0,0,0,0,$size,$size,$imginfo[0],$imginfo[1]);
            include "phpthumb.ico.php";
            $icon = new phpthumb_ico();
            $gd_image_array = array($resize_im);
            $icon_data = $icon->GD2ICOstring($gd_image_array);
            $filename = "temp/".date("Ymdhis").rand(1,1000).".ico";
            if(file_put_contents($filename, $icon_data)){
                $output = "生成成功!请点右键->另存为 保存到本地
点击下载";
            }

        }else{
            echo "生成错误请重试!";
                                                 Convert


ICO icon online conversion




                                                                                                                                                                                                                                                                                             🎜>                                                                      ;/tr>

  

if($output){
echo "";
                                                                             http://veryim.com" style="color:#cccccc">veryim.com







phpthumb.ico.php



Copy code

The code is as follows:

//////////////////////////////////////////////////////////////
///  phpThumb() by James Heinrich    //
//        available at http://phpthumb.sourceforge.net     ///
//////////////////////////////////////////////////////////////
///                                                         //
// phpthumb.ico.php - .ICO output format functions          //
//                                                         ///
//////////////////////////////////////////////////////////////


class phpthumb_ico {

    function phpthumb_ico() {
        return true;
    }


    function GD2ICOstring(&$gd_image_array) {
        foreach ($gd_image_array as $key => $gd_image) {

            $ImageWidths[$key]  = ImageSX($gd_image);
            $ImageHeights[$key] = ImageSY($gd_image);
            $bpp[$key]          = ImageIsTrueColor($gd_image) ? 32 : 24;
            $totalcolors[$key]  = ImageColorsTotal($gd_image);

            $icXOR[$key] = '';
            for ($y = $ImageHeights[$key] - 1; $y >= 0; $y--) {
                for ($x = 0; $x < $ImageWidths[$key]; $x++) {
                    $argb = $this->GetPixelColor($gd_image, $x, $y);
                    $a = round(255 * ((127 - $argb['alpha']) / 127));
                    $r = $argb['red'];
                    $g = $argb['green'];
                    $b = $argb['blue'];

                    if ($bpp[$key] == 32) {
                        $icXOR[$key] .= chr($b).chr($g).chr($r).chr($a);
                    } elseif ($bpp[$key] == 24) {
                        $icXOR[$key] .= chr($b).chr($g).chr($r);
                    }

                    if ($a < 128) {
                        @$icANDmask[$key][$y] .= '1';
                    } else {
                        @$icANDmask[$key][$y] .= '0';
                    }
                }
                // mask bits are 32-bit aligned per scanline
                while (strlen($icANDmask[$key][$y]) % 32) {
                    $icANDmask[$key][$y] .= '0';
                }
            }
            $icAND[$key] = '';
            foreach ($icANDmask[$key] as $y => $scanlinemaskbits) {
                for ($i = 0; $i < strlen($scanlinemaskbits); $i += 8) {
                    $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT)));
                }
            }

        }

        foreach ($gd_image_array as $key => $gd_image) {
            $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);

            // BITMAPINFOHEADER - 40 bytes
            $BitmapInfoHeader[$key]  = '';
            $BitmapInfoHeader[$key] .= "x28x00x00x00";                              // DWORD  biSize;
            $BitmapInfoHeader[$key] .= $this->LittleEndian2String($ImageWidths[$key], 4);      // LONG   biWidth;
            // The biHeight member specifies the combined
            // height of the XOR and AND masks.
            $BitmapInfoHeader[$key] .= $this->LittleEndian2String($ImageHeights[$key] * 2, 4); // LONG   biHeight;
            $BitmapInfoHeader[$key] .= "x01x00";                                      // WORD   biPlanes;
               $BitmapInfoHeader[$key] .= chr($bpp[$key])."x00";                          // wBitCount;
            $BitmapInfoHeader[$key] .= "x00x00x00x00";                              // DWORD  biCompression;
            $BitmapInfoHeader[$key] .= $this->LittleEndian2String($biSizeImage, 4);            // DWORD  biSizeImage;
            $BitmapInfoHeader[$key] .= "x00x00x00x00";                              // LONG   biXPelsPerMeter;
            $BitmapInfoHeader[$key] .= "x00x00x00x00";                              // LONG   biYPelsPerMeter;
            $BitmapInfoHeader[$key] .= "x00x00x00x00";                              // DWORD  biClrUsed;
            $BitmapInfoHeader[$key] .= "x00x00x00x00";                              // DWORD  biClrImportant;
        }


        $icondata  = "\x00\x00";                                      // idReserved;   // Reserved (must be 0)
        $icondata .= "\x01\x00";                                      // idType;       // Resource Type (1 for icons)
        $icondata .= $this->LittleEndian2String(count($gd_image_array), 2);  // idCount;      // How many images?

        $dwImageOffset = 6 + (count($gd_image_array) * 16);
        foreach ($gd_image_array as $key => $gd_image) {
            // ICONDIRENTRY   idEntries[1]; // An entry for each image (idCount of 'em)

            $icondata .= chr($ImageWidths[$key]);                     // bWidth;          // Width, in pixels, of the image
            $icondata .= chr($ImageHeights[$key]);                    // bHeight;         // Height, in pixels, of the image
            $icondata .= chr($totalcolors[$key]);                     // bColorCount;     // Number of colors in image (0 if >=8bpp)
            $icondata .= "\x00";                                      // bReserved;       // Reserved ( must be 0)

            $icondata .= "\x01\x00";                                  // wPlanes;         // Color Planes
            $icondata .= chr($bpp[$key])."\x00";                      // wBitCount;       // Bits per pixel

            $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]);
            $icondata .= $this->LittleEndian2String($dwBytesInRes, 4);       // dwBytesInRes;    // How many bytes in this resource?

            $icondata .= $this->LittleEndian2String($dwImageOffset, 4);      // dwImageOffset;   // Where in the file is this image?
            $dwImageOffset += strlen($BitmapInfoHeader[$key]);
            $dwImageOffset += strlen($icXOR[$key]);
            $dwImageOffset += strlen($icAND[$key]);
        }

        foreach ($gd_image_array as $key => $gd_image) {
            $icondata .= $BitmapInfoHeader[$key];
            $icondata .= $icXOR[$key];
            $icondata .= $icAND[$key];
        }

        return $icondata;
    }

    function LittleEndian2String($number, $minbytes=1) {
        $intstring = '';
        while ($number > 0) {
            $intstring = $intstring.chr($number & 255);
            $number >>= 8;
        }
        return str_pad($intstring, $minbytes, "x00", STR_PAD_RIGHT);
    }

    function GetPixelColor(&$img, $x, $y) {
        if (!is_resource($img)) {
            return false;
        }
        return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y));
    }

}

?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/318401.htmlTechArticleindex.php 复制代码 代码如下: ?PHP $output=""; if(isset($_GET['action'])$_GET['action']=='make'){ if(isset($_FILES['upimage']['tmp_name'])$_FILES['upimage']['tmp_name']is_upl...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Target size:
   < ;label for="s1">16*16
                                                                                                                              s2">32*32

                                                                             value="Generate">
< ;div style="border:1px solid #D8D8B2;background-color:#FFFFDD;padding:10px">".$output."