• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP基于yii框架实现生成ICO图标_PHP

php 搞代码 4年前 (2022-01-26) 28次浏览 已收录 0个评论

1,phpthumb_ico 是生成ICO图标的类,源码如下

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 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  $scanlinemaskbits) {        for ($i = 0; $i  $gd_image) {      $biSizeImage = $ImageWidths[$key] * $ImageHeights[$key] * ($bpp[$key] / 8);       // BITMAPINFOHEADER - 40 bytes      $BitmapInfoHeader[$key] = '';      $BitmapInfoHeader[$key] .= "\x28\x00\x00\x00";               // 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] .= "\x01\x00";                   // WORD  biPlanes;        $BitmapInfoHeader[$key] .= chr($bpp[$key])."\x00";             // wBitCount;      $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";               // DWORD biCompression;      $BitmapInfoHeader[$key] .= $this->LittleEndian2String($biSizeImage, 4);      // DWORD biSizeImage;      $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";               // LONG  biXPelsPerMeter;      $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";               // LONG  biYPelsPerMeter;      $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";               // DWORD biClrUsed;      $BitmapInfoHeader[$key] .= "\x00\x00\x00\x00";               // 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];      $i<a>@本文9来源gao($daima.com搞@代@#码8网^</a><strong>搞代gaodaima码</strong>condata .= $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));  } }


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP基于yii框架实现生成ICO图标_PHP
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址