我正在建立一个网站,用户可以在其中上传图像并旋转图像。 我还使用php将图像调整了2倍的大小,以使图像具有2种尺寸(取决于显示位置)。
我试图通过将imagejpeg的第三个渗透率设置为84而不是100来降低jpg图像的分辨率,但是奇怪的是,较低分辨率的图像花费的时间相同,有时加载时间比同一图像更长具有高分辨率。 (我多次在pingdom上对其进行了测试。)
这里是指向包含高分辨率图像的页面的链接。 http://9typestest.com/ahblick3/cat4.php?cat=1530016402548 而下一个链接是具有相同图像但分辨率较低的图像库 http://9typestest.com/ahblick3/cat4.php?cat=1530018903821。
这是我用来调整图像大小的PHP。 为了获得更高的分辨率,我用84代替了imagjpeg的第三个字母中的100
if(in_array($filee,$images)){
//rotate image
$degrees = -(float)$deg;
$source_properties = getimagesize($filetl);
$image_type = $source_properties[2];
if( $image_type == IMAGETYPE_JPEG ) {
header('Content-type: image/jpeg');
$source = imagecreatefromjpeg($filetl);
$rotate = imagerotate($source, $degrees, 0);
imagejpeg($rotate,$filetl,100);
imagedestroy($source);
imagedestroy($rotate);
}elseif($image_type == IMAGETYPE_PNG){
echo'yesyesyesn';
header('Content-type: image/png');
$source = imagecreatefrompng($filetl);
$rotate = imagerotate($source, $degrees, 0);
imagepng($rotate,$filetl,9);
imagedestroy($source);
imagedestroy($rotate);
}
//see how much to resize image first time
if($source_properties[0]>10000){
$final_w = 9.5;
}elseif($source_properties[0]>7500&&$source_properties[0]<10000){
$final_w = 7;
}elseif($source_properties[0]>6000&&$source_properties[0]<7500){
$final_w = 5.5;
}elseif($source_properties[0]>4500&&$source_properties[0]<6000){
$final_w = 4;
}elseif($source_properties[0]>3000&&$source_properties[0]<4500){
$final_w = 2.5;
}elseif($source_properties[0]>1500&&$source_properties[0]<2999){
$final_w = 1.4;
}else{
$final_w = 1;
}
//resize image first time
if( $image_type == IMAGETYPE_JPEG ) {
$image_resource_id = imagecreatefromjpeg($filetl);
$target_width = $source_properties[0] /$final_w;
$target_height = $source_properties[1] / $final_w;
$target_layer=imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
imagejpeg($target_layer,'dest2/'.$filename,100);
imagejpeg($target_layer,'destp/'.$filename.'.html',100);
}
elseif( $image_type == IMAGETYPE_GIF ) {
$image_resource_id = imagecreatefromgif($filetl);
$target_width = $source_properties[0] /$final_w;
$target_height = $source_properties[1] / $final_w;
$target_layer=imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
imagegif($target_layer,'dest2/'.$filename,100);
imagegif($target_layer,'p/'.$filename.'.html',100);
}
elseif( $image_type == IMAGETYPE_PNG ) {
$image_resource_id = imagecreatefrompng($filetl);
$target_width = $source_properties[0] /$final_w;
$target_height = $source_properties[1] / $final_w;
$target_layer=imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
imagepng($target_layer,'dest2/'.$filename,9);
imagepng($target_layer,'destp/'.$filename.'.html',9);
}
$filen = time();
//resize watermark image
$source_properties2 = getimagesize('out/water3.png');
if($target_width > $target_height){
$target_width = $target_height * 0.45;
$target_height = $target_width * 0.45;
}else{
$target_width = $target_width * 0.45;
$target_height = $target_width * 0.45;
}
$srcImage = imagecreatefrompng( 'out/water3.png' );
$targetImage = imagecreatetruecolor( $target_width, $target_height );
imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );
imagecopyresampled( $targetImage, $srcImage,
0, 0,
0, 0,
$target_width,$target_height, $source_properties2[0],$source_properties2[1] );
imagepng( $targetImage, 'out/water4.png', 9 );
//creat a watermark on the image
function watermark_image($target, $wtrmrk_file, $newcopy) {
$watermark = imagecreatefrompng($wtrmrk_file);
imagealphablending($watermark, true);
imagesavealpha($watermark, true);
$source_properties2 = getimagesize($target);
$image_type2 = $source_properties2[2];
if( $image_type2 == IMAGETYPE_JPEG ) {
$img = imagecreatefromjpeg($target);
}elseif( $image_type2 == IMAGETYPE_GIF ) {
$img = imagecreatefromgif($target);
}elseif( $image_type2 == IMAGETYPE_PNG ) {
$img = imagecreatefrompng($target);
}
$img_w = imagesx($img);
$img_h = imagesy($img);
$wtrmrk_w = imagesx($watermark);
$wtrmrk_h = imagesy($watermark);
$dst_x = ($img_w / 2) - ($wtrmrk_w / 2); // For centering the watermark on any image
$dst_y = ($img_h / 2) - ($wtrmrk_h / 2); // For centering the watermark on any image
imagecopy($img, $watermark, $dst_x, $dst_y, 0, 0, $wtrmrk_w, $wtrmrk_h);
imagejpeg($img, $newcopy, 100);
imagedestroy($img);
imagedestroy($watermark);
}
$logo = 'out/water4.png';
if(watermark_image('dest2/'.$filename,$logo, 'dest/'.$filename)){
echo'big yes';
}else{
echo 'big no';
}
//see how much to resize image second time
$source_properties = getimagesize('dest/'.$filename);
$filesize = filesize('dest/'.$filename);
$filesize /= 1000;
if($source_properties[0]>3500){
$final_w = 8.5;
}elseif($source_properties[0]>2999&&$source_properties[0]<3500){
$final_w = 7.5;
}elseif($source_properties[0]>2499&&$source_properties[0]<3000){
$final_w = 6.5;
}elseif($source_properties[0]>1999&&$source_properties[0]<2500){
$final_w = 5.5;
}elseif($source_properties[0]>1499&&$source_properties[0]<2000){
$final_w = 4.6;
}elseif($source_properties[0]>999&&$source_properties[0]<1500){
$final_w = 3.1;
}elseif($source_properties[0]>500&&$source_properties[0]<1000){
$final_w = 1.2;
}else{
$final_w = 1;
}
$image_type = $source_properties[2];
// resize image second time
if( $image_type == IMAGETYPE_JPEG ) {
$image_resource_id = imagecreatefromjpeg('dest/'.$filename);
//$target_layer = fn_resize($image_resource_id,$source_properties[0],$source_properties[1]);
$target_width = $source_properties[0] /$final_w;
$target_height = $source_properties[1] / $final_w;
$target_layer=imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
imagejpeg($target_layer,'sdest/'.$filename,100);
}
elseif( $image_type == IMAGETYPE_GIF ) {
$image_resource_id = imagecreatefromgif('dest/'.$filename);
$target_width = $source_properties[0] /$final_w;
$target_height = $source_properties[1] / $final_w;
$target_layer=imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
imagegif($target_layer,'sdest/'.$filename,100);
}
elseif( $image_type == IMAGETYPE_PNG ) {
$image_resource_id = imagecreatefrompng('dest/'.$filename);
$target_width = $source_properties[0] /$final_w;
$target_height = $source_properties[1] / $final_w;
$target_layer=imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $source_properties[0],$source_properties[1]);
imagepng($target_layer,'sdest/'.$filename,9);
}
}