image_all_rgb.php


  1. <?php
  2. //similar_text($numStr, $val, $pre); //计算两个字符串的相似度
  3. //print_r($pre);
  4. $imgPath = 'time.jpg';
  5. $size = getimagesize($imgPath);//得到图片的信息
  6. $im = imagecreatefromjpeg($imgPath);//創建一張圖片
  7. //$rgb = imagecolorat($im, 100, 100);//得到任意一點的颜色值
  8. //$aa = imagecolorsforindex($im, $rgb);
  9. //
  10. print_r($size);
  11. //410 =>0
  12. //188 =>1
  13. for ($i = 0; $i < $size[1]; ++ $i) {
  14. for ($j = 0; $j < $size[0]; ++$j) {
  15. $rgb = imagecolorat($im, $j, $i); //取得某像素的颜色索引值
  16. $rgbarray[$i][$j] = imagecolorsforindex($im, $rgb);//取得某索引的颜色
  17. //foreach ($rgbarray as $key =>$value){
  18. }
  19. }
  20. print_r($rgbarray);
  21. echo "<img src=\"time.jpg\" />";

匹配图像中的验证码


  1. <?php
  2. class gjPhone
  3. {
  4. protected $imgPath; // 图片路径
  5. protected $imgSize; // 图片大小
  6. protected $hecData; // 分离后数组
  7. protected $horData; // 横向整理的数据
  8. protected $verData; // 纵向整理的数据
  9. function __construct ($path)
  10. {
  11. $this->imgPath = $path;
  12. }
  13. public function getHec ()
  14. {
  15. $size = getimagesize($this->imgPath); //获取图片信息数组
  16. $res = imagecreatefrompng($this->imgPath); //创建一个新图像
  17. for ($i = 0; $i < $size[1]; ++ $i) {
  18. for ($j = 0; $j < $size[0]; ++ $j) {
  19. $rgb = imagecolorat($res, $j, $i); //取得某像素的颜色索引值
  20. $rgbarray = imagecolorsforindex($res, $rgb);//取得某索引的颜色
  21. if ($rgbarray['red'] < 125 || $rgbarray['green'] < 125 ||
  22. $rgbarray['blue'] < 125) {
  23. $data[$i][$j] = 1;
  24. } else {
  25. $data[$i][$j] = 0;
  26. }
  27. }
  28. }
  29. $this->imgSize = $size; //图片大小
  30. $this->hecData = $data; //分离后数组
  31. }
  32. public function magHorData ()
  33. {
  34. $data = $this->hecData;
  35. $size = $this->imgSize;
  36. $z = 0;
  37. for ($i = 0; $i < $size[1]; ++ $i) {
  38. if (in_array('1', $data[$i])) {
  39. $z ++;
  40. for ($j = 0; $j < $size[0]; ++ $j) {
  41. if ($data[$i][$j] == '1') {
  42. $newdata[$z][$j] = 1;
  43. } else {
  44. $newdata[$z][$j] = 0;
  45. }
  46. }
  47. }
  48. }
  49. return $this->horData = $newdata;
  50. }
  51. public function showPhone ($ndatas)
  52. {
  53. error_reporting(0);
  54. $phone = null;
  55. $d = 0;
  56. foreach ($ndatas as $key => $val) {
  57. if (in_array(1, $val)) { //检查数组中是否有某个值
  58. foreach ($val as $k => $v) {
  59. $ndArr[$d] .= $v;
  60. }
  61. }
  62. if (! in_array(1, $val)) {
  63. $d ++;
  64. }
  65. }
  66. foreach ($ndArr as $key01 => $val01) {
  67. $phone .= $this->initData($val01);
  68. }
  69. return $phone;
  70. }
  71. /**
  72. * 初始数据
  73. */
  74. public function initData ($numStr)
  75. {
  76. $result = null;
  77. $data = array(
  78. '1' => '00000000111000000000000001110000000001001000100000000010100011000000000011000110000000000110000100000000010110011000000',
  79. '5' => '00000000001000000000000000010000000000100100100000000000101001110000000000100000110000000011000000100000001101000010000',
  80. '10' => '00000011100011100000000011001100100100100010010001000110000100100010001100001001000100011000010010001001001001100010100'
  81. );
  82. foreach ($data as $key => $val) {
  83. similar_text($numStr, $val, $pre); //计算两个字符串的相似度
  84. if ($pre > 95) { // 相似度95%以上
  85. $result = $key;
  86. break;
  87. }
  88. }
  89. return $result;
  90. }
  91. }
  92. $imgurl = 'jd.png';
  93. list ($width, $heght, $type, $attr) = getimagesize($imgurl);
  94. $new_w = 17;
  95. $new_h = 11;
  96. $thisimage = imagecreatetruecolor($new_w, $new_h); // $new_w, $new_h 为裁剪后的图片宽高
  97. //新建一个真彩色图像 imagecreatetruecolor
  98. $background = imagecolorallocate($thisimage, 255, 255, 255);
  99. //为一幅图像分配颜色
  100. imagefilledrectangle($thisimage, 0, 0, $new_w, $new_h, $background);
  101. //画一矩形并填充
  102. $oldimg = imagecreatefrompng($imgurl); // 载入原始图片
  103. // 首先定位要取图的位置(这里可以通过前端js或者其他手段定位,由于我这是测试,所以就ps定位并写死了)
  104. $weizhi = array(
  105. '1' => 165,
  106. '5' => 308,
  107. '10' => 456
  108. );
  109. foreach ($weizhi as $wwzz) {
  110. $src_y = 108;
  111. imagecopy($thisimage, $oldimg, 0, 0, $wwzz, $src_y, $new_w, $new_h); // $src_y,$new_w为原图中裁剪区域的左上角坐标拷贝图像的一部分将src_im图像中坐标从src_x,src_y开始,宽度为src_w,高度为src_h的一部分拷贝到dst_im图像中坐标为dst_x和dst_y的位置上。
  112. $tem_png = 'tem_1.png';
  113. imagepng($thisimage, __DIR__ . '/' . $tem_png); // 通过定位从原图中copy出想要识别的位置并生成新的缓存图,用以后面的图像识别类使用。
  114. $gjPhone = new gjPhone($tem_png); // 实例化类
  115. $gjPhone->getHec(); // 进行图像像素分离
  116. $horData = $gjPhone->magHorData(); // 将分离出是数据转成01表示的图像、这里可以根据自己喜好定
  117. $phone = $gjPhone->showPhone($horData); // 将转换好的01表示的数据与库中的数据进行匹配,匹配度95以上就算成功,库这里由于是做测试就直接写了数组
  118. echo '| ' . $phone . ' | ';
  119. }

php 获取一张图片所有点的颜色值的更多相关文章

  1. php 获取一张图片所有点的颜色值,感觉不错转载学习

    片段一 //similar_text($numStr, $val, $pre); //计算两个字符串的相似度 //print_r($pre); $imgPath = 'time.jpg'; $size ...

  2. Thinkphp发布文章获取第一张图片为缩略图实现方法

    正则匹配图片地址获取第一张图片地址 此为函数 在模块或是全局Common文件夹中的function.php中 /** * [getPic description] * 获取文本中首张图片地址 * @p ...

  3. Qt获取一张图片的平均色(主色调)

    这两天在一个小工具中想做一个图标的发光效果,用固定颜色做出来效果很丑,于是想到此方法,得到图标的主色调后,将颜色调亮,并设置为阴影颜色,从而达到类似发光的效果. 本文章主要在于得到一张图片的平均色,并 ...

  4. delphi 获取图片某一像素的颜色值

    前言:在VCL里有GetPixel函数,可直接用,在FMX里直接用这个函数没有定义,在FMX的library中找这个函数在FMX.Graphics.TBitmapData.GetPixel中 结果我引 ...

  5. iOS获取UIView上某点的颜色值

    项目需求中遇到获取UIView上某个坐标点的RGB颜色值的需求,现在把自己找到的解决方案简单总结记录一下,遇到了下面的情况: 不可移动的UIView 旋转式的UIView 滑条式的UIView 不可移 ...

  6. android 从系统相册获取一张图片

    package net.viralpatel.android.imagegalleray; import android.app.Activity; import android.content.In ...

  7. php获取内容中第一张图片地址

    $note = '<img src="http://images.xxx.com/article/cover/201601/20/141539161273.png?imageView2 ...

  8. 获取一段HTML文本中的第一张图片与截取内容摘要

    有时候我们获得到的数据是一段HTML文本,也许这段文本里面有许多图片,需要截取一张作为标题图片,这时就可以用到下面这个方法获取到第一张图片: #region 获取第一张图片 /// <summa ...

  9. C#获取屏幕鼠标所指点的颜色

    有时候要获取屏幕某一点的坐标颜色值,可以如下实现: 在VS2012中创建一个C#的Windows窗口应用程序,然后在Form上添加PictureBox和Button两个控件,并加入以下代码. //需要 ...

随机推荐

  1. Python-数据类型内置方法(1)

    目录 数字类型内置方法 整形(int) 浮点型(float) 字符串类型内置方法 优先掌握 需要掌握 了解 列表类型内置方法 优先掌握 需要掌握 数字类型内置方法 整形(int) 作用:年龄 定义:x ...

  2. 移动端自定义键盘的vue组件 ----keyboard

    <style scoped lang="less"> .keyboard { /* height: 250px; */ width: 100%; position: f ...

  3. light oj 1231 dp 多重背包

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> ...

  4. iOS之String动态书写

    /** String动画书写出来 @param string 要写的字 @param view 父视图 @param ui_font 字体大小 @param color 字体颜色 */ - (void ...

  5. Hibernate O/R 映射

    O/R 映射 目前为止我们已经通过应用 Hibernate 见识过十分基础的 O/R 映射了,但是还有三个更加重要的有关映射的话题需要我们更详细的探讨.这三个话题是集合的映射,实体类之间的关联映射以及 ...

  6. HDU--2639 Bone Collector II(01背包)

    题目http://acm.hdu.edu.cn/showproblem.php?pid=2639 分析:这是求第K大的01背包问题,很经典.dp[j][k]为背包里面装j容量时候的第K大的价值. 从普 ...

  7. 订单风险系统BI

    最近被公司叫去协助传统做维表查询服务,项目已经做完.和前端联调过程发现oracle对查询 sql和产品设计还是挺重要的.不能全部堆给代码去做,如何方便代码,代码优化到最高性能才是首要解决的事,前端才能 ...

  8. java后台对上传的图片进行压缩

    java开发中经常遇到对图片的处理,JDK中也提供了对应的工具类,不过处理起来很麻烦,Thumbnailator是一个优秀的图片处理的开源Java类库,处理效果远比Java API的好,从API提供现 ...

  9. Odoo Documentation : Environment

    Environment The Environment stores various contextual data(上下文数据 ) used by the ORM: the database cur ...

  10. 在xml中对one2many 字段屏蔽 添加项目

    在xml中对one2many 字段(mrp_workorder_variation_line_ids) 设置 只有在草稿状态下才能编辑 <field name="mrp_workord ...