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

作物全宽/高比作物
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

复制
相关文章
使用 Typescript 对多个版本号序列排序
例如现在存在一组版本号,[{version: "0.12.0.2"}, {version: "0.1.0.2"}],按 version 排序后的结果为 [{version: "0.1.0.2"}, {version: "0.12.0.2"}]。
Yorkyu
2022/03/22
9660
centos7开机界面出现多个选项
第一个选项正常启动,第二个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统)
全栈程序员站长
2022/06/29
1.6K0
centos7开机界面出现多个选项
springMvc 对多个视图后缀解析
springMvc 对多个视图后缀解析 如何配置? 代码如下:可以参考: <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1"> <property name="prefix" value="/views/"/> <property name="suffix" value=".jsp"/> </bean> <bean class="org.sprin
爱明依
2019/03/12
1.2K0
centos7开机界面出现多个选项
第一个选项正常启动,第二个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统)
用户1685462
2021/07/23
8590
ios开发中使用Masonry对多个视图进行均匀布局
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/80595105
用户1451823
2018/09/13
1.8K0
ios开发中使用Masonry对多个视图进行均匀布局
mybatis 使用tips - 使用多个参数
执行如下命令: mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate 可以使用mybatis generator mybatis 使用多个参数 自定义方法需要根据多个查询条件去查询: SELECT * FROM `db_demo`.`hot_topic` WHERE lang='english' AND category='017' AND topic_type='video' ORDER BY score DESC; 推荐使用
千往
2018/01/24
1.7K0
使用VIM搜索多个文件[通俗易懂]
使用vim可以方便的搜索多个文件,这个时侯需要使用的命令是:vimgrep。vimgrep的命令格式是:
全栈程序员站长
2022/11/09
2.1K0
使用mysqldump备份多个库
一个数据库实例中有20+个库,本次备份需要备份其中的10+个库,使用mysqldump直接进行备份踩到一个warning和一个error。
阿dai学长
2020/05/27
4.1K0
批量对多个测序文件进行fastqc
现在一共是728*2=1456个测序文件,需要全部进行质控。 fastqc的命令很简单,直接跟文件即可,参数里面主要用-o(输出路径)和-t(线程,一般用2或4)
Y大宽
2019/05/29
3.9K0
python字典批量删除多个键值对(连续)
  搜不到字典批量删除多个键值对的方法,换了个搜索姿势,批量取N个元素,那么组合一下,就出来了!
逆向小白
2023/10/16
2130
python字典批量删除多个键值对(连续)
Arduino如何同时使用多个串口
如果想要给Arduino UNO R3同时接上WiFi模块和蓝牙模块时,但是Arduino的串口只有一个,怎样才能让Arduino同时使用多个串口呢?
小雨coding
2020/06/09
4.8K0
Arduino如何同时使用多个串口
Swift 使用lexicographicallyprecedes 多个参数排序
版权声明:转载请标明出处 https://blog.csdn.net/ZY_FlyWay/article/details/89184264
星宇大前端
2019/04/18
1.2K0
Swift  使用lexicographicallyprecedes 多个参数排序
多个php版本的composer使用
因为项目中使用swoole开发,一直使用win10 ubuntu子系统开发,随着代码量的增加,每次启动越来越慢。swoole官方提供了一个windows版swoole,启动速度特别快。但是由于其使用cgwin编译,所以无法正常使用composer,每次都需要切换php的环境变量。于是就想能不能让composer 识别我原来的php版本。打开composer的根文件试试真的可以。
高久峰
2023/06/29
6190
msyql多个or,and,
where (`to`= 2 and `from`= 8) or (`to`= 8 and `from`= 2) and from_unixtime(a.time,’%Y-%m-%d’) =’2017-05-31′ order by a.time desc
全栈程序员站长
2022/07/20
2990
使用shell并行执行多个脚本
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53906996
用户1148526
2019/05/25
3.4K0
VisualStudio 使用多个环境进行调试
在 VisualStudio 2017 支持使用 launchSettings.json 文件定义多个不同的环境进行调试
林德熙
2018/09/19
7340
VisualStudio 使用多个环境进行调试
使用python给outlook多个联系
如果报错:com_error: (-2147221008, '\xc9\xd0\xce\xb4\xb5\xf7\xd3\xc3 CoInitialize\xa1\xa3', None, None)
py3study
2020/01/08
7000
使用python合并多个pdf文件
今天需要整理一份资料,需要把多个pdf合并为一个,wps这些软件自然是有这个功能,但一般都是收费的,百度上也有很多网站,但资料上传到别人的网站,始终觉得还是不太可靠,故自己搜索了一下使用python来处理pdf文件,故此分享这个方法
用户9925864
2022/07/27
2.1K0
使用python合并多个pdf文件
多个FeignClient使用相同的name
FeignClient标签默认使用name属性作为bean name,name属性同时为服务名。 如果指定了contextId属性,则使用contextId作为bean name。 如此可为一个服务创建多个FeignClient: @FeignClient(name = "my-service-id", contextId = "my-service-id-api1") public interface Api1FeignClient { } @FeignClient(name = "my-service
路过君
2020/12/17
3.5K0
点击加载更多

相似问题

如何在phpMyAdmin中建立表之间的关系

10

如何在表Axapta之间建立关系

12

如何在MySQL表之间建立关系

116

在表之间建立关系

23

如何在ASP.Net MembershipServices用户和其他表之间建立关系?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文