javascript - 如何使用 jCrop 调整图像大小以适合所有纵横比?
问题描述
我正在使用 Jcrop 调整纵横比为 1 的图像大小。在大多数情况下效果很好,但是在某些情况下,当图像更宽时,我无法选择所有图像。我可以做什么样的动作来选择图像的全部内容?
我的代码是:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
$('#jimage').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
$('#jimage').Jcrop({
onSelect: showCoords,
aspectRatio: 1,
bgColor: '#2e7cce',
bgOpacity: .4,
boxWidth: 500,
});
}}
我尝试添加一些我在网上查看的缩放实现,但是缩放会影响选择区域并且结果是相同的。我需要能够选择图像的所有内容。
解决方案
设置aspectRatio: 1
意味着您总是想要一个正方形选择,如果图像是矩形的(高度大于宽度,反之亦然),您将无法选择整个图像。
一种解决方案是删除aspectRatio: 1
这将允许自由形式裁剪。
另一种解决方案是在将图像传递给 Jcrop 之前将其缩放为正方形。
reader.onload = function(e) {
$('#jimage').attr('src', e.target.result);
width = $('#jimage').width();
height = $('#jimage').height();
if(height > width )
$('#jimage').width(width * (height/width));
else if(width > height)
$('#jimage').height(height * (width/height));
}
推荐阅读
- regex - 通过 htaccess 在 drupal 8 中提供静态子页面
- reactjs - 如何用 HOC 包装 forwardRef 组件?
- amazon-web-services - 如何使用 Terraform 将 S3 存储桶区域名称发送到 json 文件?
- javascript - Google Maps API - 检索 2 个坐标之间的道路距离
- autohotkey - 如何制作它以便您可以更改 GUI 中的热键?- 自动热键
- python - pip安装并重新启动运行时后Google colab上的导入错误
- php - 运行 phpunit 抛出错误,在中找不到类 TestRunner
- xpath - 尝试在 Google IMPORTXML 函数上使用 XPath 获取数据时出错
- spring-boot - Spring Boot 嵌入式 tomcat - 413 请求实体太大
- c# - Process.Start() 调用后的代码未运行,但在调试 C# 时工作