我正在使用PHP Imagick运行时调整图像大小.该网站有一个图片上传功能,我们不能信任用户使用Web友好JPEGs,因为在mass-import有许多3对5MB图像,甚至一些大的13MB.每个图像都变成了一个缩略图(200x200),当从列表视图进入详细视图时,只显示一个图像,所以性能不是很大,尽管我们不能完全抛弃它.这是我们到目前为止所做的事情:
$iMagick = new Imagick($file);
$iMagick->setImageResolution(72,72);
$iMagick->resampleImage(72,72,imagick::FILTER_UNDEFINED,1);
$geometry = $iMagick->getImageGeometry();
if ($geometry['height'] > 1920 || $geometry['width'] > 1080) {
$iMagick->scaleImage(1920, 0);
if($geometry['height'] > $resizeHeight) {
$iMagick->scaleImage(0, 1080);
}
}
$iMagick->setImageCompression(Imagick::COMPRESSION_JPEG);
$iMagick->setImageCompressionQuality($compression);
$iMagick->writeImage($file);
$Imagick->clear();
Run Code Online (Sandbox Code Playgroud)
旁注:我刚刚在条件逻辑中意识到高度/宽度的缺陷,所以暂时忽略它.我会很快编辑这个问题,以反映正确的条件比较.对于那些没有抓住它的人来说,它将所有图像缩放到1920宽度,即使它应该是缩放高度,然后在缩放之后将其缩小到最大尺寸1080 height.
我用来测试的3MB 2398×2400图像以图像开始.将其缩放以1079x1080产生1.5MB图像,然后按JPEG质量添加压缩70将其降低到750KB.使用kraken.io,图像能够被压缩到不到60KB.我还能对这个脚本做些什么,因为它需要在运行时优化图像吗?
我已经阅读了使用已安装的libjpeg的建议,但我找不到任何关于它启用的功能的文档,或者是否有办法强制Imagick专门使用它.我甚至不确定Imagick是不是已经使用过它了.
编辑:解决方案
function itm_optimizeImage($file, $compression = 70, $maxDimensions = ['width' => null, …Run Code Online (Sandbox Code Playgroud) 在特定条件下的某个页面上,我需要在页面卸载时在SQL中运行更新语句.它需要在用户到达下一页之前完成.我正在使用JQuery 1.8.3.这是我开始的地方:
$(window).unload(function() {
$.ajax({
type: "POST",
cache: false,
url: "myScript.php",
data: ({ /* my data */ }),
success: function(result) { /* do nothing */ },
error: function(data) { location.reload(); }
});
});
Run Code Online (Sandbox Code Playgroud)
使用此方法,update语句未运行.通过阅读它我尝试了"async:false",这似乎一开始并没有解决我的问题,直到我检查了我的表并看到值正在更新(仅在添加"async:false"之后).根据进一步阅读,"async:false"已在JQuery 1.8中弃用,但仍在执行更新语句.问题是更新语句在下一页的select语句已经完成之前没有完成执行,因此除非用户刷新页面,否则数据已过期.这是由于1.8中对"async:false"的部分支持,对db的写入执行速度缓慢与从db读取的快速执行,以及其他一些延迟问题,要么 ???即使unload事件使用户保持在页面上,下一个HTTP请求是否可能通过?
I have an html file called index.html, and it has this div in there
<body>
<div id="rock"> <img src="rock.PNG" alt="rock" onclick="test()"> </div>
<div id="paper"> <img src="paper.PNG" alt="rock"></div>
<div id="scissors"> <img src="scissors.PNG" alt="rock"> </div>
Run Code Online (Sandbox Code Playgroud)
test is my function, and its within the same file and its written here
<script type="text/javascript">
function test(){
var elem = document.getElementById("rock");
var pos = 0;
var id = setInterval(frame, 10);
function frame() {
if (pos == 350) {
clearInterval(id);
} else {
pos++;
elem.style.top = pos …Run Code Online (Sandbox Code Playgroud)