thinkphp 利用GD库在图片上写文字
<?php
/**
* Created by PhpStorm.
* User: Administrator
*/
namespace Home\Event; use \Think\Image;
use \Think\Upload;
class ImgEvent
{ private $THINK_IMAGE = null;
private $THINK_UPLOAD = null; public function __construct()
{
$this->THINK_IMAGE = new Image();
$this->THINK_UPLOAD = new Upload();
} /*
* 保存base64文件
* $img string base64类型的文件
* $type string 保存的文件类型
* app_user_head_img 用户头像
*
*
*/
public function saveImg_base64($img = null , $type = null)
{
//获取保存图片配置
$imgConfig_savePath = C("img_save.save_path");
$imgConfig_size = C("img_save.size");
$saveFlag = false;
// dump($imgConfig_savePath[$type]);
// dump($imgConfig_size); if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $img, $result) && $imgConfig_savePath[$type])
{ $img_ext = $result[2]; //图片后缀
$img_header = $result[1];//图片头信息
$new_file_name = date('Ymd').'/'.uniqid().'.'.$img_ext;
$origin_img_path = '';//原图的保存路径
$origin_img_save_flag = true;//
foreach($imgConfig_savePath[$type] as $k => $v)
{ if(!is_dir($v.date('Ymd')))
{
mkdir($v.date('Ymd'),0777,true);
} if ($k == 'origin')
{
//先保存一份原图,然后其他尺寸的保存直接调用原图路径origin_img_path.
$origin_res = file_put_contents($v.$new_file_name, base64_decode(str_replace($img_header, '', $img)));
if (!$origin_res)
{
$origin_img_save_flag = false;
break;
}
else
{
$saveFlag = $new_file_name;
$origin_img_path = $v.$new_file_name;
$this->THINK_IMAGE->open($origin_img_path);
}
}
else
{
if ($origin_img_save_flag)
{
$width = $imgConfig_size[$type][$k]['w'];
$height = $imgConfig_size[$type][$k]['h'];
$this->THINK_IMAGE->thumb($width, $height,3)->save($v.$new_file_name);
} }
} }
return $saveFlag;
} /*
* 保存file类型文件
*
*/
public function saveImg_file($img = null , $type = null)
{ //获取保存图片配置
$imgConfig_savePath = C("img_save.save_path");
$imgConfig_size = C("img_save.size");
$saveFlag = false; if ($img && $imgConfig_savePath[$type])
{ $origin_img_save_flag = true;
foreach($imgConfig_savePath[$type] as $k => $v)
{ if(!is_dir($v.date('Ymd')))
{
mkdir($v.date('Ymd'),0777,true);
} if ($k == 'origin')
{
$this->THINK_UPLOAD->rootPath = $v;
$this->THINK_UPLOAD->subName = date('Ymd');
$this->THINK_UPLOAD->saveName = array('uniqid','');
$saveRes = $this->THINK_UPLOAD->uploadOne($img);
if (!$saveRes)
{
$origin_img_save_flag = false;
}
else
{
$saveFlag = true;
$origin_img_path = $v.$saveRes['savepath'].$saveRes['savename'];
$this->THINK_IMAGE->open($origin_img_path);
$fileName = $saveRes['savepath'].$saveRes['savename'];
}
}
else
{
if ($origin_img_save_flag)
{
$width = $imgConfig_size[$type][$k]['w'];
$height = $imgConfig_size[$type][$k]['h'];
$compress_img_path=$v.$fileName;
$saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName); if (!$saveFlag)
{
$saveFlag = false;
$origin_img_save_flag = false;
} } } } if($saveFlag)
{
#$saveFlag = $fileName;
$saveFlag = array('origin'=>get_current_Host().'/'.$origin_img_path,'compress'=>get_current_Host().'/'.$compress_img_path);
} }
return $saveFlag;
} public function save_file($img = null , $type = null)
{ //获取保存图片配置
$imgConfig_savePath = C("img_save.save_path");
$saveFlag = false; if ($img && $imgConfig_savePath[$type]) { if (!is_dir($imgConfig_savePath[$type] . date('Ymd'))) {
mkdir($imgConfig_savePath[$type] . date('Ymd'), 0777, true);
}
$this->THINK_UPLOAD->rootPath = $imgConfig_savePath[$type];
$this->THINK_UPLOAD->subName = date('Ymd');
$this->THINK_UPLOAD->saveName = array('uniqid', '');
$saveRes = $this->THINK_UPLOAD->uploadOne($img);
if ($saveRes) {
$saveFlag = true;
$origin_img_path = $imgConfig_savePath[$type] . $saveRes['savepath'] . $saveRes['savename']; //$fileName = $saveRes['savepath'] . $saveRes['savename'];
}
} if($saveFlag)
{
$saveFlag = $origin_img_path;
return get_current_Host().'/'.$saveFlag;
}else
{
return $saveFlag;
} } /*
* 保存file类型文件,多文件
*
*/
public function saveImgs_files($imgs = null , $type = null)
{ //获取保存图片配置s
$imgConfig_savePath = C("img_save.save_path");
$imgConfig_size = C("img_save.size");
$saveFlag = false;
$imgResArr = array();//保存图片路径
$origin_img_path = array();//原图路径 if ($imgs && $imgConfig_savePath[$type])
{ $origin_img_save_flag = true;
foreach($imgConfig_savePath[$type] as $k => $v)
{ if(!is_dir($v.date('Ymd')))
{
mkdir($v.date('Ymd'),0777,true);
} if ($k == 'origin')
{
$this->THINK_UPLOAD->rootPath = $v;
$this->THINK_UPLOAD->subName = date('Ymd');
$this->THINK_UPLOAD->saveName = array('uniqid','');
$saveRes = $this->THINK_UPLOAD->upload($imgs); if ($saveRes)
{
$saveFlag = true;
foreach ($saveRes as $srK => $srV)
{
$origin_img_path[] = $v.$saveRes[$srK]['savepath'].$saveRes[$srK]['savename'];
$fileName = $saveRes[$srK]['savepath'].$saveRes[$srK]['savename'];
$imgResArr[] = $fileName;
} }
}
else
{
foreach($origin_img_path as $oipK => $oipV)
{
if ($saveFlag)
{
$width = $imgConfig_size[$type][$k]['w'];
$height = $imgConfig_size[$type][$k]['h'];
$this->THINK_IMAGE->open($oipV);
$saveThumb = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$imgResArr[$oipK]);
if (!$saveThumb)
{
$saveFlag = false;
break;
}
}
} } } if ($saveFlag)
{
$saveFlag = $imgResArr;
}
}
return $saveFlag;
} /*
* 保存微信头像 - url
*
*/
public function save_WxImg($picUrl = '',$type = null)
{ $ch = curl_init($picUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 0); //对body进行输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$package = curl_exec($ch);
$httpInfo = curl_getinfo($ch);
curl_close($ch);
$media = array_merge(array('mediaBody' => $package), $httpInfo); //求出文件格式
preg_match('/\w\/(\w+)/i', $media["content_type"], $extmatches);
$fileExt = $extmatches[1]; $saveName = md5(microtime(true)).".{$fileExt}"; //获取保存图片配置
$imgConfig_savePath = C("img_save.save_path");
$imgConfig_size = C("img_save.size");
$saveFlag = false; if ($imgConfig_savePath[$type])
{ $origin_img_save_flag = true;
foreach($imgConfig_savePath[$type] as $k => $v)
{ if(!is_dir($v.date('Ymd')))
{
mkdir($v.date('Ymd'),0777,true);
} if ($k == 'origin')
{
file_put_contents($v.'/'.date('Ymd').'/'.$saveName,$media['mediaBody']); $origin_img_path = $v.'/'.date('Ymd').'/'.$saveName;
$this->THINK_IMAGE->open($origin_img_path);
$fileName = date('Ymd').'/'.$saveName;
}
else
{
if ($origin_img_save_flag)
{
$width = $imgConfig_size[$type][$k]['w'];
$height = $imgConfig_size[$type][$k]['h'];
$saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName); if (!$saveFlag)
{
$saveFlag = false;
$origin_img_save_flag = false;
}
else
{
$saveFlag = $fileName;
}
} }
}
}
return $saveFlag; } /*
* 保存file类型文件
*
*/
public function saveImg_Wx($WxImg = array() , $type = null)
{ //获取保存图片配置
$imgConfig_savePath = C("img_save.save_path");
$imgConfig_size = C("img_save.size");
$saveFlag = false;
$imgResArr = array(); if ($WxImg && $imgConfig_savePath[$type])
{ foreach ($WxImg as $wiK => $wiV)
{ $wxImg = $this->getWxImg($wiV); $origin_img_save_flag = true;
foreach($imgConfig_savePath[$type] as $k => $v)
{ if(!is_dir($v.date('Ymd')))
{
mkdir($v.date('Ymd'),0777,true);
} if ($k == 'origin')
{
file_put_contents($v.'/'.date('Ymd').'/'.$wxImg['saveName'],$wxImg['imgMedia']['mediaBody']); $origin_img_path = $v.'/'.date('Ymd').'/'.$wxImg['saveName'];
$this->THINK_IMAGE->open($origin_img_path);
$fileName = date('Ymd').'/'.$wxImg['saveName'];
$imgResArr[] = $fileName;
}
else
{
if ($origin_img_save_flag)
{
$width = $imgConfig_size[$type][$k]['w'];
$height = $imgConfig_size[$type][$k]['h'];
$saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName); if (!$saveFlag)
{
$saveFlag = false;
$origin_img_save_flag = false;
}
else
{
$saveFlag = $fileName;
}
} }
}
} if($saveFlag)
{
$saveFlag = $imgResArr;
} }
return $saveFlag;
}
/*
* 保存用户的推广图片 在图片上写字!!!!
*/
public function save_userShareImg($bg_img_path = '' , $head_img_path = '' , $qrCode_img_path = '' , $saveFile = '' , $userName = '' , $userDscp = '' , $font_path = '')
{ //设置头像图片为圆角
$head_img_radius = $this->radius_img($head_img_path,240);
//合并到背景图中
$this->mergeImage($bg_img_path,$head_img_radius,$saveFile,array('left' => 200, 'top' => 55, 'width' => 480, 'height' => 480));
//设置名称
$this->writeText($saveFile, $saveFile, $userName,255,255,255,1010,32,$font_path, array());
//设置二维码内容
$this->mergeImage($saveFile,$qrCode_img_path,$saveFile,array('left' => 255, 'top' => 684, 'width' => 250, 'height' => 245)); return $saveFile;
} /*
* 合并图片
*/
private function mergeImage($bg_img, $main_img, $saveFile, $param)
{ extract($param);
// list($bgWidth, $bgHeight) = getimagesize($bg_img);
$bgImg = $this->imagecreate($bg_img);
if (!is_resource($main_img))
{
list($mainWidth, $mainHeight) = getimagesize($main_img);
$mainImg = $this->imagecreate($main_img);
}
else
{
$mainImg = $main_img; $mainWidth = $width;
$mainHeight = $height;
}
imagecopyresized($bgImg, $mainImg, $left, $top, 0, 0, $width, $height, $mainWidth, $mainHeight);
// imagecopyresized($bgImg, $mainImg, $left, $top, 0, 0, $width, $height, $width,$height);
ob_start();
// output jpeg (or any other chosen) format & quality
imagejpeg($bgImg, NULL, 100);
$contents = ob_get_contents();
ob_end_clean();
imagedestroy($bgImg);
imagedestroy($mainImg);
$fh = fopen($saveFile, "w+");
fwrite($fh, $contents);
fclose($fh);
} /*
* 图片写文字
* $bg_img 背景图片
* $saveFile 保存图片路径
* $text 文字
* $fontColor 字体颜色
* $top 图片距离顶端高度
* $fontSize 字体大小
* $font 字体路径
* $param 传递的参数
*/
private function writeText($bg_img, $saveFile, $text, $colorR,$colorG,$colorB , $top , $fontSize , $font , $param = array())
{
list($bgWidth, $bgHeight) = getimagesize($bg_img);
$im = imagecreatefromjpeg($bg_img); $fontColor = imagecolorallocate($im, $colorR, $colorG, $colorB);//字的RGB颜色
$str = mb_convert_encoding($text, "html-entities", "utf-8");;//解决乱码问题 $fontBox = imagettfbbox($fontSize, 0, $font, $str);//文字水平居中实质
$width = imagesx($im);
imagettftext($im, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), $top, $fontColor, $font, $str); ob_start();
// output jpeg (or any other chosen) format & quality
imagejpeg($im, NULL, 100);
$contents = ob_get_contents();
ob_end_clean();
imagedestroy($im);
$fh = fopen($saveFile, "w+");
fwrite($fh, $contents);
fclose($fh);
} /**
* 处理圆角图片
* @param string $imgPath 源图片路径
* @param integer $radius 圆角半径长度默认为15,处理成圆型
* @return [type] [description]
*/
public function radius_img($imgPath = '', $radius = 65)
{
$ext = pathinfo($imgPath);
$src_img = null;
switch ($ext['extension']) {
case 'jpg':
$src_img = imagecreatefromjpeg($imgPath);
break;
case 'png':
$src_img = imagecreatefrompng($imgPath);
break;
default:
$src_img = imagecreatefromjpeg($imgPath);
break;
}
$wh = getimagesize($imgPath);
$w = $wh[0];
$h = $wh[1];
// $radius = $radius == 0 ? (min($w, $h) / 2) : $radius;
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $radius; //圆 角半径
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbColor = imagecolorat($src_img, $x, $y);
if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) {
//不在四角的范围内,直接画
imagesetpixel($img, $x, $y, $rgbColor);
} else {
//在四角的范围内选择画
//上左
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//上右
$y_x = $w - $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//下左
$y_x = $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//下右
$y_x = $w - $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
}
}
}
return $img;
} private function imagecreate($bg)
{
$bgImg = @imagecreatefromjpeg($bg);
if (FALSE == $bgImg) {
$bgImg = @imagecreatefrompng($bg);
}
if (FALSE == $bgImg) {
$bgImg = @imagecreatefromgif($bg);
}
return $bgImg;
} /*
* 下载微信服务器的图片
* media_id 微信的媒体id
* type 保存图片类型
* */
public function getWxImg($mediaId)
{
if(!class_exists('\JSSDK') && !class_exists('\WxPayConfig'))
{
vendor('wxsdkapi.jssdk');
vendor('wxpayapi.lib.WxPay#Config');
}
$res = new \JSSDK(C('WEIXINPAY_CONFIG.APPID'),C('WEIXINPAY_CONFIG.APPSECRET'));
$accessToken = $res->getAccessToken(); // $mediaId = 'cVqPIhDPPThUtayzS27GK6RN4-dseA6AZnTJxcg7_VaeuAaKcL53X32hmKxhgiSD';
// $accessToken = 'KHaopJY444kJ06LcH9ESj-73pkEfFTgIr3L45RURuUxv1KTjgXyFepJ-cTIF_oUyAKyYb5dK2r9L_wC-WDw2USqGQBMobC6DzPImuhPqxB8jxZ41CuLDtJiaEZk8Vf5kWSSjAAAAWW';
$picUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$accessToken&media_id=$mediaId"; $ch = curl_init($picUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 0); //对body进行输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$package = curl_exec($ch);
$httpInfo = curl_getinfo($ch);
curl_close($ch);
$media = array_merge(array('mediaBody' => $package), $httpInfo); //求出文件格式
preg_match('/\w\/(\w+)/i', $media["content_type"], $extmatches);
$fileExt = $extmatches[1]; $saveName = md5(microtime(true)).".{$fileExt}"; $img = array('imgMedia'=>$media,'saveName'=>$saveName); return $img;
}
/*
* 下载微信服务器的图片
* media_id 微信的媒体id
* type 保存图片类型
* */
public function getWxImg2($mediaId,$file)
{
if(!class_exists('\JSSDK') && !class_exists('\WxPayConfig'))
{
vendor('wxsdkapi.jssdk');
vendor('wxpayapi.lib.WxPay#Config');
}
$res = new \JSSDK(C('WEIXINPAY_CONFIG.APPID'),C('WEIXINPAY_CONFIG.APPSECRET'));
$accessToken = $res->getAccessToken();
$picUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$accessToken&media_id=$mediaId"; return httpcopy($picUrl,$file);
} }
调用方法:
/**
* 生成图片
* @param varchar tid 任务id
* @httpmethod POST
* @response 响应数据
* {
* "ResultType": "1000",
* "Message": "上传成功",
* "AppendData": "图片路径",
* }
*/
public function UploadNavImg()
{
$tid=Util::getSafeText(I('post.tid'));
$imgEven = A('Gszc/Img','Event');
//查出公司名称
$res = M('gszc_tasks as t')
->join('app_gszc_userinfo as u on u.tid=t.id')
->where('t.id='.$tid)
->field('u.*,t.lastname')
->find(); //主营业务范围
$zyywfws = explode('、',$res['zyywfw']);
$zyywfw = array_slice($zyywfws, 0,3); //获取前三个主营业范围
$zyywfw2 = array_slice($zyywfws, 3,6); //获取后三个主营业务范围 $imageName = date("His",time())."_".rand(1111,9999).'.jpg';
$dir = date('Ymd');
$path = 'uploads/company/'.$dir;
if (!is_dir($path)){ //判断目录是否存在 不存在就创建
mkdir($path,0777,true);
}
$img = $imgEven->save_userShareImg($_SERVER['DOCUMENT_ROOT']."/uploads/test.png",'','',$_SERVER['DOCUMENT_ROOT']."/".$path."/". $imageName,$res['lastname'],$zyywfw, $zyywfw2, '',$_SERVER['DOCUMENT_ROOT']."/uploads/PingFang Bold.ttf"); if($img){
//生成照片成功 保存到任务表里
$tasks = M('gszc_tasks')->where('id='.$tid)->setField('lastpic',$path."/".$imageName);
if($tasks){
$lujing = $path."/".$imageName;
$this->array_return['errno']=self::__OK__;
$this->array_return['errmsg']='生成成功!';
$this->array_return['data']= $lujing ;
$this->ajaxReturn($this->array_return);
}
}else{
$this->array_return['errno']=self::__ERROR__;
$this->array_return['errmsg']='生成失败!';
$this->array_return['data']=[];
$this->ajaxReturn($this->array_return);
}
}
$i = 528;
$j = 113;
foreach($zyywfw as $k=>$v){ //设置前三个主营业务范围
$this->copyWriteText($saveFile, $saveFile, $v,254,253,254, $j , $i ,11,$font_path, array());
$j = $j+135; }
thinkphp 利用GD库在图片上写文字的更多相关文章
- 使用Qpaint在图片上写文字
开发过程中需要实现在图片上叠加文字,可以采用Qpaint在图片上写文字,然后将图片显示在上面.再将Qlabel加到Qwidget中.效果如下 //创建对象,加载图片 QPixmap pix; pix. ...
- 函数putText()在图片上写文字
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace c ...
- PHP学习笔记:利用gd库给图片打图片水印
<?php $dst_path = '1.jpg';//目标图片 $src_path = 'logo1.png';//水印图片 //创建图片的实例 $dst = imagecreatefroms ...
- Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)
想要给图片添加文字水印或者注释,我们需要实现在UIImage上写字的功能. 1,效果图如下: (在图片左上角和右下角都添加了文字.) 2,为方便使用,我们通过扩展UIImage类来实现添加水印功能 ( ...
- php 使用GD库压缩图片,添加文字图片水印
先上一个工具类,提供了压缩,添加文字.图片水印等方法: image.class.php <?php class Image { private $info; private $image; pu ...
- C#图片上写文字
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...
- 如何去除图片上的文字(PS使用教程)
很多时候由于工作的需要,需要对我们的图片进行修改,修改的同时还想要保存我们的图片背景,所以很多人就不知道怎么弄了,小编跟大家分享一下使用PS如何简单的去掉图片上的文字,希望对大家有所帮助! 方法/步骤 ...
- php学习笔记:利用gd库生成图片,并实现随机验证码
说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符 ...
- php 简单的学习GD库绘制图片并传回给前端实现方式
1.基本的GD库绘制图片汇总 2.后台实现小案例 <?php // $img = imagecreatetruecolor(200,40); // var_dump($img); // 利用GD ...
随机推荐
- 关于圆角border-radius
一.border-radius 可以同时设置1-4个值 a)1个值 控制4个圆角 b)2个值 第1个控制左上角和右下角 第2个值控制左下角和右上角 c)3个值 第1个控制 第2个值控制左 ...
- CentOS 7运维管理笔记(7)----Apache 基于端口的虚拟主机配置
如果一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配置. (1) 在虚拟机的CentOS7服务器上配置 eth0:4 为192.168.1.214: (2) ...
- .NET开源工作流RoadFlow-流程运行-工作委托
如果某一个人某一段时间不在单位,则可以将自己的工作委托给他人代为处理. 在 流程处理-->工作委托 中可以管理自己的委托,管理员也可以在 流程管理-->工作委托 中管理所有人的委托: 委托 ...
- 05_ActiveMQ的selectors
[ JMS Selectors ] JMS Selectors用于在订阅中,基于消息属性对消息进行过滤. 以下是个Selectors的例子:Java代码 consumer = session.crea ...
- 【Udacity】机器学习性能评估指标
评估指标 Evaluation metrics 机器学习性能评估指标 选择合适的指标 分类与回归的不同性能指标 分类的指标(准确率.精确率.召回率和 F 分数) 回归的指标(平均绝对误差和均方误差) ...
- scrum心得和团队作业
一.学习scrum心得 敏捷的介绍 最近上课我们了解到了敏捷,很多人开始谈论敏捷开发.研究敏捷开发,那么究竟什么才是敏捷开发呢? 简单的说,敏捷开发是一种以人为核心.迭代.循序渐进的开发方法.在敏捷开 ...
- java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's 'value' attribute or make the default bootstrapper class available.
1.前几天搭建单元测后,今天用其测试,结果报了这个问题.网上搜索后,刚开始以为原因是 Spring的 依赖版本的问题,我现在的依赖是: 因为其他的比如说 spring-content spring ...
- C++ int与string的相互转换(含源码实现)
一.int转换成string Ⅰ.to_string函数 c++11标准增加了全局函数std::to_string: string to_string (int val); string to_str ...
- VMware安装VMware tool后mount /dev/cdrom /mnt成功挂载含rpm包的镜像
安装虚拟机后如果不安装vmware tool使用mount /dev/cdrom /mnt可以成功挂在含rpm包的镜像,但是安装VMware tool后挂在后/mnt中是错误的内容.查了半天后无果,自 ...
- Effective Java 第二版 Enum
/** * Effective Java 第二版 * 第30条:用enum代替int常量 */ import java.util.HashMap;import java.util.Map; publi ...