上期在如何实现javascript截图 jQuery插件imgAreaSelect使用详解一

文中通过jQuery插件imgAreaSelect动态截取图像,可以获取当前小图像在源图片中的位置等信息,jQuery的

imgAreaSelect插件内置方法preview()可得到当前图像的坐标(起点XY和终点XY)以及宽度和高度,再结合PHP

GD库内置函数imagecopyresampled()的复制图像功能,在图片中截取图像,实现具体应用如:用户自定义头像功能等。

结合上期实例(略)

一,javascript代码部分

function preview(img, selection) {

var scaleX = 100 / selection.width;

var scaleY = 100 / selection.height;

$(’#thumbnail + div > img’).css({

width: Math.round(scaleX * 400) + ‘px’,

height: Math.round(scaleY * 300) + ‘px’,

marginLeft: ‘-’ + Math.round(scaleX * selection.x1) +

‘px’,

marginTop: ‘-’ + Math.round(scaleY * selection.y1) + ‘px’

});

$(’#x1‘).val(selection.x1);

$(’#y1‘).val(selection.y1);

$(’#x2‘).val(selection.x2);

$(’#y2‘).val(selection.y2);

$(’#w‘).val(selection.width);

$(’#h‘).val(selection.height);

}

$(document).ready(function () {

$(’#save_thumb‘).click(function() {

var x1 = $(’#x1′).val();

var y1 = $(’#y1′).val();

var x2 = $(’#x2′).val();

var y2 = $(’#y2′).val();

var w = $(’#w’).val();

var h = $(’#h’).val();

if(x1==”" || y1==”" || x2==”" || y2==”" || w==”" ||

h==”"){

alert(”请选择缩略图”);

return false;

}else{

return true;

}

});

});

二,增加form表单Html

method=”post”>

name=”x1” value=”" id=”x1″ />

name=”y1” value=”" id=”y1″ />

name=”x2” value=”" id=”x2″ />

name=”y2” value=”" id=”y2″ />

name=”w” value=”" id=”w” />

name=”h” value=”" id=”h” />

value=”保存缩略图” id=”save_thumb”

/>

点击保存缩略图按钮后,form表单中隐藏框如x1,y1等值由jQuery的imgAreaSelect调取preview()方法获取当前截取图像的

位置如:selection.x1,selection.y1,同时判断值是否存在,如果其中任何一个值不存在则不提交,并友好提示。接下来就把当前图像

的坐标位置交给PHP GD库内置imagecopyresampled()函数处理。如图:

三,imagecopyresampled函数相关资料

说明:imagecopyresampled 重采样拷贝部分图像并调整大小

原型:bool imagecopyresampled (

resource dst_image, resource src_image, int dst_x, int dst_y, int

src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h

)dst_image 和 src_image 分别是目标图像和源图像的标识符。

其它:imagecopyresampled(目

标图像,源图像,存宽度,存高度,坐标X,坐标Y,源宽度,源高度) 如果成功则返回 TRUE,失败则返回 FALSE。

imagecopyresampled()

将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此,尤其是,减小了图像的大小而仍然保持了极大的清晰度。如果源和目标的宽度和高

度不同,则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝(如果 dst_image 和

src_image 相同的话)区域,但如果区域交迭的话则结果不可预知。

注意事项: 因为调色板图像限制(255+1 种颜色)有个问题。重采样或过滤图像通常需要多于

255

种颜色,计算新的被重采样的像素及其颜色时采用了一种近似值。对调色板图像尝试分配一个新颜色时,如果失败我们选择了计算结果最接近(理论上)的颜色。这

并不总是视觉上最接近的颜色。这可能会产生怪异的结果,例如空白(或者视觉上是空白)的图像。要跳过这个问题,请使用真彩色图像作为目标图像,例如用

imagecreatetruecolor() 创建的。

版本要求: 本函数需要 GD 2.0.1 或更高版本(推荐 2.0.28

及更高版本)。

四,实现机制:

1,上传图片,注意:使用真彩色图像作为目标图像,用imagecreatetruecolor创建。

2,使用jQuery插件imgAreaSelect获取截图的坐标信息,如左上角X,左上角Y等。

3,提交需要截取图像位置信息,使用上面imagecopyresampled函数复制图像,实现截取图像。

4,保存截取图像。

了解PHP的imagecopyresampled函数的使用,通过PHP实现截图功能就非常简单,结合jQuery的imgAreaSelect插件,轻松实现各种应用功能,如用户自定义头像,复制图片等。

php按坐标截取图片,PHP与jQuery结合实现截图功能 实现用户自定义头像相关推荐

  1. html坐标截取图片,JavaScript+html5 canvas实现本地截图教程

    最近有时间了解了下html5的各API,发现新浪微博的头像设置是使用canvas实现截图的,加之前段时间了解了下html5的File API使用File API 之FileReader实现文件上传&l ...

  2. java 剪切图片点坐标_详细介绍java根据坐标截取图片的实例代码

    这篇文章主要介绍了java 根据坐标截取图片实例代码的相关资料,需要的朋友可以参考下 java 根据坐标截取图片 实例代码:代码中有不是注释,很好看懂!package com.json.test; i ...

  3. python根据四点坐标截取图片

    话不多说,上代码. # 每个txt文件代表一张图片,txt文档中每行就是此图片中要截取的坐标.根据坐标截取小图片存放于images文件夹中 import os# 需要遍历的文件夹名 txt_dir = ...

  4. 怎么截取图片大小 html,详解html2canvas截图不能截取圆角图片的解决方案

    以前我们只能通过其他的截图工具来截取图像.现代浏览器的功能已经越来越强,随着H5的逐渐普及,浏览器本身就可以截图啦.html2canvas就是这样一款前端插件,它的原理是将Dom节点在Canvas里边 ...

  5. [置顶] JQuery在线截取图片

    JQuery在线截取图片 ASP.NET结构开发 1.在线截取 前几天看织梦CMS,有个截图功能挺好的,可以在线选取需要截取的部分图片,然后后台截取 2.开始正文 首先构建文档,样式 <html ...

  6. jquery实现截取pc图片_[置顶] JQuery在线截取图片

    JQuery在线截取图片 ASP.NET结构开发 1.在线截取 前几天看织梦CMS,有个截图功能挺好的,可以在线选取需要截取的部分图片,然后后台截取 2.开始正文 首先构建文档,样式 JQuery截取 ...

  7. JQuery在线截取图片

    JQuery在线截取图片 ASP.NET结构开发 1.在线截取 前几天看织梦CMS,有个截图功能挺好的,可以在线选取需要截取的部分图片,然后后台截取 2.开始正文 首先构建文档,样式 <html ...

  8. python 批量截取图片 并保存原图片名

    前言 最近需要对图片进行批量截取处理,所以写下来作为笔记 代码 (1)对每张图片都需要点选然后截图 import matplotlib.pyplot as plt import os from PIL ...

  9. java截取图片-设置方位+设置大小

    java截取图片-设置方位+设置大小 package com.onegrid.darj.test; import java.awt.Rectangle;   import java.awt.image ...

最新文章

  1. 云计算将成为媒体融合发展与数字化变革的加速剂
  2. IntelliJ IDEA 、 Android Stadio 不显示Version Contro窗口
  3. linux的内核设计,Linux内核设计艺术(经典).pdf
  4. ReactOS调试之fDebug
  5. 用几条shell命令快速去重10G数据
  6. python315题的漫漫通关之路
  7. jOOQ API设计缺陷的奇怪发生
  8. 山东管理学院计算机二级,山东管理学院有几个校区及校区地址 哪个校区最好...
  9. java mongodb 返回所有field_Python爬虫框架:scrapy爬取知乎关注用户存入mongodb
  10. 使用Angular和ASP.net Core的Raw Websockets迷你游戏
  11. dubbox 的各种管理和监管
  12. keyerror什么意思python_为什么会出现keyerror?
  13. 【三维激光扫描】第一章:三维激光扫描入门基础知识
  14. IE主页被篡改了怎么办
  15. 常见CRC算法与C实现
  16. html5压缩视频文件大小,格式工厂怎么压缩视频大小 只需5步大视频变小视频
  17. 在Google地图上找到经度和纬度的方法
  18. ubuntu 9配置
  19. NBA球星管理系统 v1.0
  20. 【LLC原理与设计】仙童半导体 LLC原理与设计

热门文章

  1. 来自大厂 10+ 前端面试题附答案(整理版)
  2. 信息系统项目管理师考点之错题知识汇总
  3. 性能指标-qps、tps、tp99、并发用户数、响应时间理解
  4. 乐1 乐视X608_官方线刷包_救砖包_解账户锁
  5. 间谍软件变得越来越聪明,即使亿万富翁也无法幸免
  6. java 西部数码_西部数码Java虚拟主机功能升级
  7. EndNote小技巧:如何方便的显示Research Note
  8. python数据分析与展示--Pandas库入门
  9. 以IT培训起家的达内科技,如今半壁江山是非IT培训的其他职业教育了
  10. 【第34题】JAVA高级技术-对象克隆3(深克隆)