sql(半原创 参考很多的东西)
2015-12-15 16:46
567 查看
一、从mysql中选取某个字段不重复的所有值
select *, count(distinct name) from table group by name
二、删除指定的字段重复值,key1是第一个字段,key2是第二个(先加标识符,然后删除-)
三、保持尺寸不变,改变图片质量来改变大小的方法:
/**
* desription 压缩图片
* @param sting $imgsrc 图片路径
* @param string $imgdst 压缩后保存路径
*/
//压缩图片
private static function image_size_compress($imgsrc,$imgdst,$percent){
list($width,$height,$type)=getimagesize($imgsrc);
$new_width = $width;
$new_height =$height;
switch($type){
case 1:
$giftype=Image::check_gifcartoon($imgsrc);
if($giftype){
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromgif($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
imagedestroy($image_wp);
}
break;
case 2:
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
print_r($imgdst."</br>");
print_r($percent);
imagedestroy($image_wp);
break;
case 3:
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefrompng($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
imagedestroy($image_wp);
break;
default:
break;
}
}
/**
* desription 判断是否gif动画
* @param sting $image_file图片路径
* @return boolean t 是 f 否
*/
private static function check_gifcartoon($image_file){
$fp = fopen($image_file,'rb');
$image_head = fread($fp,1024);
fclose($fp);
return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;
}
//递归改变图片品质,将大小控制在500kb以下
private static function changeSize($old,$new,$percent,$step){
Image::image_size_compress($old, $new, $percent);
$size = filesize($new);
if($size>500000){
unlink($new);
$percent-=$step;
Image::changeSize($old,$new,$percent,$step);
}else{
return;
}
}
//判断修改画质的初始百分比以及单步变化大小
public static function changeImage($old,$new)
{
$size = filesize($old);
//判断缩放初始比例
if ($size > 500000) {
$position = floor($size / 500000);
switch ($position) {
case 10:
$percent = 25;
$step = 3;
break;
case 9:
$percent = 30;
$step = 3;
break;
case 8:
$percent = 35;
$step = 3;
break;
case 7:
$percent = 40;
$step = 4;
break;
case 6:
$percent = 45;
$step = 5;
break;
case 5:
$percent = 50;
$step = 4;
break;
case 4:
$percent = 60;
$step = 4;
break;
case 3:
$percent = 70;
$step = 3;
break;
case 2:
$percent = 80;
$step = 2;
break;
case 1:
$percent = 90;
$step = 1;
break;
default:
$percent = 95;
$step = 1;
break;
}
//每次都先删除中转文件
if(is_file($new)){
unlink($new);
}
Image::changeSize($old, $new, $percent, $step);
}
}
select *, count(distinct name) from table group by name
二、删除指定的字段重复值,key1是第一个字段,key2是第二个(先加标识符,然后删除-)
//去除指定的字段的重复值 private function deleteRepeat($arr,$key1,$key2){ $length=count($arr); for ($i = 0; $i < $length; $i++) { $cat_fid=$arr[$i][$key1]; $cat_id=$arr[$i][$key2]; for($j=$i+1;$j<count($arr);$j++){ //if ($j != $i) { if ($cat_fid == $arr[$j][$key1]) { if ($cat_id == $arr[$j][$key2]) { $arr[$j]['flag']=1; } }else{ continue; } //} } } foreach($arr as $key=>$val){ if(isset($val['flag'])){ $arr[$key]=""; } } $newarr=array_filter($arr); return $newarr; }
三、保持尺寸不变,改变图片质量来改变大小的方法:
/**
* desription 压缩图片
* @param sting $imgsrc 图片路径
* @param string $imgdst 压缩后保存路径
*/
//压缩图片
private static function image_size_compress($imgsrc,$imgdst,$percent){
list($width,$height,$type)=getimagesize($imgsrc);
$new_width = $width;
$new_height =$height;
switch($type){
case 1:
$giftype=Image::check_gifcartoon($imgsrc);
if($giftype){
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromgif($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
imagedestroy($image_wp);
}
break;
case 2:
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
print_r($imgdst."</br>");
print_r($percent);
imagedestroy($image_wp);
break;
case 3:
$image_wp=imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefrompng($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst,$percent);
imagedestroy($image_wp);
break;
default:
break;
}
}
/**
* desription 判断是否gif动画
* @param sting $image_file图片路径
* @return boolean t 是 f 否
*/
private static function check_gifcartoon($image_file){
$fp = fopen($image_file,'rb');
$image_head = fread($fp,1024);
fclose($fp);
return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;
}
//递归改变图片品质,将大小控制在500kb以下
private static function changeSize($old,$new,$percent,$step){
Image::image_size_compress($old, $new, $percent);
$size = filesize($new);
if($size>500000){
unlink($new);
$percent-=$step;
Image::changeSize($old,$new,$percent,$step);
}else{
return;
}
}
//判断修改画质的初始百分比以及单步变化大小
public static function changeImage($old,$new)
{
$size = filesize($old);
//判断缩放初始比例
if ($size > 500000) {
$position = floor($size / 500000);
switch ($position) {
case 10:
$percent = 25;
$step = 3;
break;
case 9:
$percent = 30;
$step = 3;
break;
case 8:
$percent = 35;
$step = 3;
break;
case 7:
$percent = 40;
$step = 4;
break;
case 6:
$percent = 45;
$step = 5;
break;
case 5:
$percent = 50;
$step = 4;
break;
case 4:
$percent = 60;
$step = 4;
break;
case 3:
$percent = 70;
$step = 3;
break;
case 2:
$percent = 80;
$step = 2;
break;
case 1:
$percent = 90;
$step = 1;
break;
default:
$percent = 95;
$step = 1;
break;
}
//每次都先删除中转文件
if(is_file($new)){
unlink($new);
}
Image::changeSize($old, $new, $percent, $step);
}
}
相关文章推荐
- PostgreSQL学习笔记5之函数和操作符<一>
- HTML5本地数据库(一)
- PostgreSQL学习笔记4之常用数据类型
- sqlite不区分大小写查询
- sql子查询
- sqlserver排序规则&小数位精度不能自动截断的异常
- PostgreSQL学习笔记3之表的继承和分区
- SQL Server中left()函数,stuff()函数
- 常用的mysql语句
- PostgreSQL学习笔记2之模式
- redis持久化和常见故障
- PostgreSQL学习笔记1之表定义
- Redis的可视化工具的使用
- win7 64位安装redis 及Redis Desktop Manager使用
- 在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )
- 安装redis 及 PHP redis 扩展
- Excel 表导入 SQL Server 2005
- SQL书写规范
- sql server 索引
- JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法