[置顶] 修改一些PHP工具
来源:互联网 发布:淘宝旺铺装修模板代码 编辑:程序博客网 时间:2024/05/16 04:34
原来的代码 在非框架下是木有问题的,但是用在框架下就报错,mb的,终于修改好了...
具体使用见附件,可以自己封装下 呵呵
<?phpnamespace yii\helpers;use common\lib\QRCode2;/** * 二维码图像生成 */class QrcodeHelper {/** * 输出生成的二维码图片 * * @param string $url 对应的url地址 * @param integer $size 图像大小 * @param integer $margin 边距 * * @return void 包含二维码图像的输出对象 */static function generateImage($url,$size=6,$margin=1){ static $logo = __DIR__ . '/qrlogo.png'; if (is_readable($logo) ) { return self::generateImageWithLogo($url, $logo,$size,$margin); } $qr = QRCode2::getMinimumQRCode($url, QRCode2::$QR_ERROR_CORRECT_LEVEL_H);$im = $qr->createImage($size, $margin); header("Content-type: image/gif");imagegif($im);imagedestroy($im);} /** * 输出生成的二维码图片 * * @param string $url 对应的url地址 * @param file $logo 对应的url地址 * @param integer $size 图像大小 * @param integer $margin 边距 * * @return void 包含二维码图像的输出对象 */ static function generateImageWithLogo($url, $logo,$size=6,$margin=1) { if (!is_readable($logo) ) { return self::generateImage($url, $size, $margin); } $qr = QRCode2::getMinimumQRCode($url, QRCode2::$QR_ERROR_CORRECT_LEVEL_M);$im = $qr->createImage($size, $margin); $im_width = imagesx($im);//二维码图片宽度 $im_height = imagesy($im);//二维码图片高度 $logo = imagecreatefromstring(file_get_contents($logo)); $logo_width = imagesx($logo);//logo图片宽度 $logo_height = imagesy($logo);//logo图片高度 $logo_im_width = $im_width / 3; $scale = $logo_width/$logo_im_width; $logo_im_height = $logo_height/$scale; $from_width = ($im_width - $logo_im_width) / 2; //重新组合图片并调整大小 imagecopyresampled($im, $logo, $from_width, $from_width, 0, 0, $logo_im_width, $logo_im_height, $logo_width, $logo_height); header("Content-type: image/png"); imagepng($im); imagedestroy($im); }}
/** * 二维码图像生成 */class Helper_Qrcode {/** * 生成二维码图片 * * @param string $url 对应的url地址 * @param integer $size 图像大小 * @param integer $margin 边距 * * @return QView_Output 包含二维码图像的输出对象 */static function generateImage($url,$size=6,$margin=1){$filename = 'qkenrcode-' . mt_rand();ob_start();$mime = image_type_to_mime_type(IMAGETYPE_GIF);$qr = QRCode::getMinimumQRCode($url, QR_ERROR_CORRECT_LEVEL_H);$im = $qr->createImage($size, $margin);imagegif($im);imagedestroy($im);unset($im);$output = new QView_Output($filename, $mime, ob_get_clean());$output ->contentDisposition('inline') ->enableClientCache(false);return $output;}}
/** * 地理位置相关辅助类 * */class Helper_Geo {private static function trueIp($ip){return filter_var($ip,FILTER_VALIDATE_IP,FILTER_FLAG_IPV4|FILTER_FLAG_IPV6|FILTER_FLAG_NO_RES_RANGE|FILTER_FLAG_NO_PRIV_RANGE);}/** * 根据 ip 地址计算对应的 地标信息 * * @param $ip IP 地址 * * @return array */static function getData($ip){$ip = self::trueIp($ip);if ( $ip ){Unirest::verifyPeer(false);Unirest::timeout(2);$response = Unirest::get('http://ip.taobao.com/service/getIpInfo.php', array( "Accept" => "application/json" ),array( "ip" => $ip ));if ( is_array($response->body) && $response->body['code'] === 0 && !empty($response->body['data']) ){return $response->body['data'];} }return false;}}