这个问题在六六贴陈偶得的照片时解释过一次了。如果照片的尺寸X>800 and Y>600,就须符合X:Y=>4:3的比例,否则就会变形。
Q9nu"x
% M`q#,Y?3^I 现在的照片调整是这样处理的:
hiT9H5 6> if(this.width>'800')this.width='800'; if(this.height>'600')this.height='600'
8Q+TE; ^r%i3 如果照片宽度>800,就调整为800 (高度自动按比例调整)
Dj/Q1KY$m ------如果照片比例符合4:3或大于4:3,则Y轴就一定小于600了,下一句不会再执行赋值,所以不会变形。
~'|&{-< 如果照片高度大于600,则调整为600
lTd+{TF. ------如果照片宽度没有赋过值(上句未执行过赋值),则宽度按原始比例调整。
d?E4[7<t$1 FJ nG<5Rh 如果宽度超过了800,则X=800,按原始比例调整后Y仍然大于600,则第二句还要执行一次height的赋值,因为img.width属于已经赋过值,所以设定img.height属性时,width属性就不会再自动调整,而是固定为800,所以图片就被强制设置为800*600,如果原始照片不符合4:3的比例,则一定会变形的。这种情况多发生在竖拍照片的情况。
jeyaT^F(
H?ieNXP7{ 这个inline script 如果改为下面的句子就不会有变形问题:
EsS!07fAM: onload =if (this.width>800) {this.width=800;} else if (this.height>600) {this.height=600;}
N/`g?B[ Yr Preuh 这个问题的关键是HTML 的img element的width与height属性只有其中一个被显式地赋值时,另一个才会自动调整,如果两个属性都被显式赋值,则按赋值调整,所以这两句只能执行其中之一,而不可以都执行。
.Pqj6Ko9 c
'/2F0y 请老大百忙之中改一下,钦此!
[ 此贴被伍胥之在2007-06-01 00:13重新编辑 ]