PHP converts images to ico format source code

WBOY
Release: 2016-07-29 09:08:25
Original
1424 people have browsed it

Class

() { return true; } function GDtoICOstr(&$gd_ico_array) { foreach ($gd_ico_array as $key => $gd_image) { $IcoWidths[$key] = ImageSX($gd_image); $IcoHeights[$key] = ImageSY($gd_image); $bpp[$key] = ImageIsTrueColor($gd_image) ? 32 : 24; $totalcolors[$key] = ImageColorsTotal($gd_image); $icXOR[$key] = ''; for ($y = $IcoHeights[$key] - 1; $y >= 0; $y--) { for ($x = 0; $x $IcoWidths[$key]; $x++) { $argb = $this->gpc($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'; } } while (strlen($icANDmask[$key][$y]) % 32) { $icANDmask[$key][$y] .= '0'; } } $icAND[$key] = ''; foreach ($icANDmask[$key] as $y => $scanlinemaskbits) { for ($i = 0; $i ($scanlinemaskbits); $i += 8) { $icAND[$key] .= chr(bindec(str_pad(substr($scanlinemaskbits, $i, 8), 8, '0', STR_PAD_LEFT))); } } } foreach ($gd_ico_array as $key => $gd_image) { $biSizeImage = $IcoWidths[$key] * $IcoHeights[$key] * ($bpp[$key] / 8); $bfh[$key] = ''; $bfh[$key] .= "\x28\x00\x00\x00"; $bfh[$key] .= $this->le2s($IcoWidths[$key], 4); $bfh[$key] .= $this->le2s($IcoHeights[$key] * 2, 4); $bfh[$key] .= "\x01\x00"; $bfh[$key] .= chr($bpp[$key])."\x00"; $bfh[$key] .= "\x00\x00\x00\x00"; $bfh[$key] .= $this->le2s($biSizeImage, 4); $bfh[$key] .= "\x00\x00\x00\x00"; $bfh[$key] .= "\x00\x00\x00\x00"; $bfh[$key] .= "\x00\x00\x00\x00"; $bfh[$key] .= "\x00\x00\x00\x00"; } $icondata = "\x00\x00"; $icondata .= "\x01\x00"; $icondata .= $this->le2s(count($gd_ico_array), 2); $dwImageOffset = 6 + (count($gd_ico_array) * 16); foreach ($gd_ico_array as $key => $gd_image) { $icondata .= chr($IcoWidths[$key]); $icondata .= chr($IcoHeights[$key]); $icondata .= chr($totalcolors[$key]); $icondata .= "\x00"; $icondata .= "\x01\x00"; $icondata .= chr($bpp[$key])."\x00"; $dwBytesInRes = 40 + strlen($icXOR[$key]) + strlen($icAND[$key]); $icondata .= $this->le2s($dwBytesInRes, 4); $icondata .= $this->le2s($dwImageOffset, 4); $dwImageOffset += strlen($bfh[$key]); $dwImageOffset += strlen($icXOR[$key]); $dwImageOffset += strlen($icAND[$key]); } foreach ($gd_ico_array as $key => $gd_image) { $icondata .= $bfh[$key]; $icondata .= $icXOR[$key]; $icondata .= $icAND[$key]; } return $icondata; } function le2s($number, $minbytes=1) { $intstring = ''; while ($number > 0) { $intstring = $intstring.chr($number & 255); $number >>= 8; } return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT); } function gpc(&$img, $x, $y) { if (!is_resource($img)) { return false; } return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y)); } } ?>
Copy after login

Controller

if ( $error['text'] == "" && isset($_FILES['upimage']['tmp_name']) && $_FILES['upimage']['tmp_name'] && is_uploaded_file($_FILES['upimage']['tmp_name'])) { if ($_FILES['upimage']['type'] > 210000) { $error['text'] = "你上传的文件体积超过了限制 最大不能超过200k"; } else { $fileext = array("image/pjpeg", "image/gif", "image/x-png", "image/png", "image/jpeg", "image/jpg"); if (!in_array($_FILES['upimage']['type'], $fileext)) { $error['text'] = "你上传的文件格式不正确 仅支持 jpg,gif,png"; }else { 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']); if (!is_array($imginfo)) { $error['text'] = "图形格式错误!"; }else { switch ($_POST['size']) { case1; $resize_im = @imagecreatetruecolor(16, 16); $size = 16; break; case2; $resize_im = @imagecreatetruecolor(32, 32); $size = 32; break; case3; $resize_im = @imagecreatetruecolor(48, 48); $size = 48; break; case4; $resize_im = @imagecreatetruecolor(64, 64); $size = 64; break; case5; $resize_im = @imagecreatetruecolor(128, 128); $size = 128; break; default; $resize_im = @imagecreatetruecolor(64, 64); $size = 64; break; } imagecopyresampled($resize_im, $im, 0, 0, 0, 0, $size, $size, $imginfo[0], $imginfo[1]); $icon = new Iconv(); $gd_image_array = array($resize_im); $icon_data = $icon->GDtoICOstr($gd_image_array); $filename = "temp/" . date("Ymdhis") . rand(1, 1000) . ".ico"; if (file_put_contents($filename, $icon_data)) { //$output = "生成成功!请点右键->另存为 保存到本地
".$filename."/" target=/"_blank/">点击下载"
; // echo $filename; //数据展示 $icon_arr=[ 'class'=>'', 'time'=>date("Y-m-d H:i:s"), 'filename'=>$_FILES['upimage']['name'], 'filepath'=>$filename, 'size'=>$size ]; } } } else { $error['text'] = "生成错误请重试"; } } } }else{ $error['text'] = "请选择图片!"; }
Copy after login

Display effect

PHP converts images to ico format source code

Source code address

ico online conversion tool has been integrated into the open source project https://github.com/diandianxiyu/ApiTesting, the online demo address will be released later

Happy New Year 2016!

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

The above introduces the source code for converting images into ico format in PHP, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Related labels:
source:php.cn
Statement of this Website
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
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!