首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >作物全宽/高比作物

作物全宽/高比作物
EN

Stack Overflow用户
提问于 2013-04-09 20:34:00
回答 5查看 3.6K关注 0票数 2

我们在我们的系统中实现了杰夫勒,到目前为止它运行良好。但我们最近发现了一个小问题:

场景

我们的网站允许用户上传他们公司的标志。我们的纵横比要求是200/150,不幸的是,用户的公司徽标看起来如下(200x63px):

用户上传了图像,由于我们的高宽比限制,他们看到:

问题:如何将裁剪到图像的全宽或全高度?我不介意jcrop是否将负裁剪维度发送回服务器,因为它应该足够聪明,能够用白色背景填充图像。最终的、预期的图像应该如下所示:

(背景已被阴影化以作对比之用)

要么是jcrop可以做到,要么是我们可以使用其他解决方案/插件?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-16 09:03:03

我不知道如何在脚本的服务器端裁剪图像,但您可以做的是添加一个名为“使用完整图像”的额外按钮,其中post数据(x、y、宽度、高度)将是图像的全部大小。然后,如果该比率高于预期,您只需创建您的图像大小与您一直想要的,调整大小的图像宽度,并将它放在您的新图像的中间。因此,下面的代码只是“伪代码”,以显示我在说什么。假设用户希望上传的图片是1000 to *200 to,而您想要的比例是200 to*150 to。用户选择“完整图像大小”,所以您发送的数据大致如下:0,1000,200(位置: 0,0,0,宽度/高度:1000,200)。在服务器端,您可以完成所有必要的计算:

代码语言:javascript
运行
AI代码解释
复制
$width = $_POST['width'];
$height= $_POST['height'];
$fullsize = isset($_POST['fullsize']) && $_POST['fullsize']; // If the full size mode is on.
if ($fullsize) {
  $image = new Image(0,0,200,150); // Create the image canvas with whatever plugin your using.
  if (($width/$height) > (200/150)) { // If WIDTH ratio is higher...
    $x = 0; // We already know the image will be align on the left because of the previous calculations (ratio)
    $y = (150/2) - ($height/2); // 50% top - half the image size = center.

  }
  if (($height/$width) > (150/200)) { // If HEIGHT ratio is higher...
    // Repeat previous code with adjusted values for height instead of width.
  }
  // The next part is pure fiction, i dont know what php extension you use, but lets pretend this is working.
  $newImage = new Image($x,$y,$width,$height,$file); // $file is probably the $_FILEs...
  $image->placeInsideCanvas($newImage); // Imagine this adds the image into your previously created canvas (200/150);
  $image->output();
}

希望这能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2013-04-12 00:04:29

您应该向他展示200/150框上的裁剪工具(或其他一些维度,但以这个w/h比),在这里加载和显示他的上传图像,而不是以他上传的图像为中心。

票数 2
EN

Stack Overflow用户

发布于 2013-04-11 23:56:14

裁剪的主要目的是从图像中获取相关内容,并以优先的高宽比进行裁剪。但是,如果对高宽比的限制导致您丢失图像数据,那么您应该选择填充解决方案。

遵循这一过程:

  1. 让用户上传图像,然后向他们展示page#2,在那里他们可以裁剪上传的图像。
  2. 一个page#2:
  3. 列表项目 (a)使用javascript计算图像上一个200:150长宽比矩形可以覆盖的面积。 (b)如果这个区域超过90% (或任何你想要的值),允许用户裁剪,你将得到一个相关的结果,这将符合你的纵横比要求。 (c)如果面积小于90%,如这200 of乘63 of图像的情况,将javascript变量更改为高宽比,使其与图像的纵横比(例如200:65 )完全/大致相等。这样,用户将能够从徽标中裁剪出更完整的部件。 (d)在你的后端脚本中,检查其案例(b)或(c)。如果是(b),使用图像处理库只生成裁剪的图像。如果它(c),创建一个宽径比为200:150的白色矩形(您想要的比率),并将(C)中裁剪生成的图像重叠,您就会得到您想要的结果。

这样,你的两个案子都能办到。而且这也不会混淆你的用户,他们会很好地理解裁剪是为了选择最好的部分的标志,而白色的填充已经做了使UI统一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15917003

复制
相关文章
Salesforce Tableau CRM Dashboards,为查询条件设置默认值
Dashboards查询条件,默认情况下,查询所有担当者的金额情报,如下也可以进行自由选择,选择特定用户的情报。
repick
2022/04/24
1.3K0
MySQL设置字段的默认值为当前系统时间
问题产生: 当我们在对某个字段进行设置时间默认值,该默认值必须是的当前记录的插入时间,那么就将当前系统时间作为该记录创建的时间。 应用场景: 1、在数据表中,要记录每条数据是什么时候创建的,应该由数据库获取当前时间自动记录创建时间。 2、在数据库中,要记录每条数据是什么时候修改的,应该而由数据数据库获取当前时间自动记录修改时间。 实际开发: 记录用户的注册时间、记录用户最后登录时间、记录用户的注销时间等。 实现步骤:(如果使用数据库远程工具则直接设置,更简单!!!) 首先将数据表中字段的数据类型设置为TIM
赵小忠
2018/01/24
9.4K0
如何将Eclipse设置为中文版[通俗易懂]
我们知道Eclipse一个开放源代码的、基于Java的可扩展开发平台,不管学习还是工作都是一款不错的集成开发环境(IDE),但是对于一些初学者看到Eclipse上满满的英文字母可能会感到无从下手,汉化后可能还好点。
全栈程序员站长
2022/08/20
4.2K0
如何将Eclipse设置为中文版[通俗易懂]
如何将EasyCVR通道设置为默认在线?
EasyCVR平台具有强大的数据接入、处理及分发能力,可支持海量视频的轻量化接入与汇聚管理。平台可支持多协议、多类型设备接入,包括:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等。
TSINGSEE青犀视频
2023/05/19
1.1K0
IntelliJ Idea如何将设置tab设置为4个空格
在阅读Nacos源码时,想提交贡献一些源码,但发现经过本地IDE修改之后,空行处被修改了,这是因为本地使用的tab进行缩进,而Nacos源码使用的是4个空格。
程序新视界
2021/12/07
3.2K0
IntelliJ Idea如何将设置tab设置为4个空格
(四) 如何将socket设置为非阻塞模式
1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的: SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol ); SOCKET WSASocket( _In_ int af, _In_ int type, _In_ int
范蠡
2018/04/04
4.7K0
如何将MySQL GR 设置为多主模式
在MySQL 5.7.17版本中发布的MySQL Group Replication(后文简称为MGR)被很多人称为MySQL复制方案的正规军,可以一举取代现在的MySQL Replication,Semisynchronous replication,甚至是可以取代之前最成功的MySQL集群方案Galera。 MGR有两种模式,一种是Single-Primary,一种是Multi-Primary,单主或者多主。 在前一种模式Single-Primary中,无论集群中有多少个节点,只有一个节点允许写入,其它
数据和云
2018/03/07
3.9K0
如何将MySQL GR 设置为多主模式
如何将U盘设置为启动盘
1.首先我们将封装好系统的启动u盘插入USB口中,启动电脑.。 2.当显示屏闪过第一个开机画面的时候,我们迅速连续按下键盘上的快捷启动热键,联想为F12,其他品牌按下表自行查询快捷启动热键或联系电脑品牌客服询问。
雾海梦曦
2022/11/12
3.8K0
如何将U盘设置为启动盘
为什么禁止把函数参数默认值设置为可变对象?
有时候我们在编写函数时,会需要给一些参数设置默认值,这个时候我们需要牢记一点:禁止使用可变对象作为参数默认值。
活用数据
2022/10/04
1.4K0
spring @Value 设置默认值
 如果配置文件中没有设置 spring.value.test 在启动的时候讲报错。
ydymz
2018/09/10
5.9K0
为多个平台选择云端配置管理工具
多云模式为企业提出了独特的配置管理挑战。而企业在选择工具时,应仔细比较云原生和第三方选项。 当企业选择迁移到云计算时,配置管理并不会消失。事实上,配置管理在云计算中变得更加重要,特别是当组织使用多个
静一
2018/03/27
1.1K0
为多个平台选择云端配置管理工具
如何将微信地区设置为:日本 我孙子市
先说一个有意思的:微信地区有个很特别的现象,很多地区都是“安道尔”,可以做一个有趣的计算,根据自己好友中安道尔人数占总好友的比例,去乘以使用微信软件总用户的数量,可以得出微信上来自“安道尔”的用户大概有2250万人。
许坏
2020/03/12
3.3K0
如何将页面设置为微信端才能打开
  我们有时候开发一个新项目比较辛苦,不想让别人轻易就能反编译代码,我们可以加一个授权登录,如果不是在微信端登录就会提示“请在微信客户端打开链接”,如下图所示,这就是很多网友说的微信链接无法在pc端打
ytkah
2018/03/06
2K0
如何将页面设置为微信端才能打开
Javascript设置函数参数默认值[ ES6/ES2015总结]
对于js设置函数参数默认值对于绝大多数小伙伴来说,那可以说是相当的简单的,在ES6/ES2015中语法很简单,但是有一些浏览器是不兼容的ES6/ES2015的,或许大家会说我们可以使用babel来编译支持低版本浏览器。
IT工作者
2022/01/26
1.7K0
MySQL字段默认值设置详解
在 MySQL 中,我们可以为表字段设置默认值,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。关于默认值,有些知识还是需要了解的,本篇文章我们一起来学习下字段默认值相关知识。
MySQL技术
2021/03/04
10.6K0
mysql decimal设置默认值0 无效,设置后自动变为null(navicat设置decimal默认值失效问题)
alter table fa_user alter column money set default 0;
超级小可爱
2023/02/20
6.1K0
jQuery实现Select自动选择默认值
==========================================================================================
IT工作者
2021/12/28
2.2K0
Hive应用:设置字段默认值 原
当我们清理了一些数据之后,数据的某些字段在数据中是没有的但是需要保留这个字段,那么我们将数据插入中转表中时,就需要给这个字段赋予默认值,来让语句正确执行。
云飞扬
2019/03/13
5.3K0
ajaxSetup设置Ajax请求的默认值
ajaxSetup() 方法为将来的 AJAX 请求设置默认值。 语法 $.ajaxSetup({name:value, name:value, ... }) 该参数为带有一个或多个名称/值对的 AJAX 请求规定设置。 下面的表格中列出了可能的名称/值: 名称 值/描述 async 布尔值,表示请求是否异步处理。默认是 true。 beforeSend(xhr) 发送请求前运行的函数。 cache 布尔值,表示浏览器是否缓存被请求页面。默认是 true。 complete(xhr,status) 请求完成
用户1055830
2018/01/18
2.1K0
点击加载更多

相似问题

在WebGL中获取鼠标点击的3D坐标

151

鼠标坐标到游戏坐标WebGL

10

MATLAB:如何从用户单击获取3D坐标?

24

JavaScript/WebGL定期从单击事件到第二个事件获取鼠标坐标

28

获取鼠标单击的坐标

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档