gpt4 book ai didi

php - 使用 3D 透视预览打印 Canvas 包装

转载 作者:搜寻专家 更新时间:2023-10-31 22:13:51 27 4
gpt4 key购买 nike

我正在寻找可以让我渲染具有 3D 透视图和环绕效果的上传图像的东西,例如 here .

这将采用使用 jCrop 等 jQuery 库进行裁剪预览的形式

目前我能够使用 Reflex.js 实现 3D 透视但也在寻找具有环绕效果的更微妙的解决方案。

任何帮助将不胜感激:)

提前致谢!

最佳答案

如果您想将其保留在客户端,您对 IE9 支持的要求基本上要求使用 Canvas 方法。您当然可以在服务器端进行渲染,然后 AJAX 加载渲染后的图像,这将在每个浏览器中工作。

如果您决定可以转储 10 以下的 IE 版本(或者至少只向他们展示没有转换的普通照片,那么您可以结合使用 CSS 3D 转换和 CSS2 剪辑来实现环绕效果。类似的东西:

<!DOCTYPE html>
<style>
body { margin: 100px; position: relative; }
.edge { width: 20px; height: 196px; background-size: auto 100%; position: absolute; left: 30px; top: 2px; transform: perspective(600px) rotateY(-45deg); transform-origin: right; }
.panel { position: absolute; left: 31px; top: 0; clip: rect(auto,auto,auto,20px); }
.panel>img { width: 350px; height: 200px; transform: perspective(600px) rotateY(30deg); transform-origin: left; }
</style>
<div class="edge" style="background-image: url(my_image.jpg)"></div>
<div class="panel"><img src="my_image.jpg" /></div>

为了分解它,我们加载了用户的图像并将其拖放到页面中,连同具有相同图像集作为背景的 divdiv 设置为较窄的宽度和几乎与主图像一样高的高度。我们可以使用 background-size 属性来调整背景图像以适合 div,即使它更高。

然后我们绝对定位这两个,使它们彼此相邻。 CSS2 clip 属性让我们剪掉图像左侧的 20px,这样此时 divimg 看起来就像一个图像。

最后,我们为每个 block 设置一个perspectivetransform-origin 并围绕Y 轴将它们旋转远离彼此。由于裁剪,我们必须将 .edge block 捏造得比原来的稍微小一些(对于 200 像素高的图像,我不得不将其降低到 196 像素才能看起来不错)但这对我来说效果很好。

显然,您需要填写供应商前缀(-moz-、-ms-、-o-、-webkit),我将留下影子作为读者的练习(容器上的简单背景可能会做)。

关于php - 使用 3D 透视预览打印 Canvas 包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com