700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 设置图片格式为php php 将bmp图片转为jpg等其他任意格式的图片

设置图片格式为php php 将bmp图片转为jpg等其他任意格式的图片

时间:2020-06-10 17:31:34

相关推荐

设置图片格式为php php 将bmp图片转为jpg等其他任意格式的图片

php

// 例子:

$path = root . ' upload//06/03/124401282315771. ' ;

$pathall = $path . ' bmp ' ;

$mi = '' ;

$mi = imagecreatefrombmp( $pathall );

imagejpeg( $mi , $path . ' jpg ' );

// 函数如下:

function imagecreatefrombmp( $filename )

{

// ouverture du fichier en mode binaire

if ( ! $f1 = fopen ( $filename , " rb " )) return false ;

// 1 : chargement des ent�tes fichier

$file = unpack ( " vfile_type/vfile_size/vreserved/vbitmap_offset " , fread ( $f1 , 14 ));

if ( $file [ ' file_type ' ] != 19778 ) return false ;

// 2 : chargement des ent�tes bmp

$bmp = unpack ( ' vheader_size/vwidth/vheight/vplanes/vbits_per_pixel ' .

' /vcompression/vsize_bitmap/vhoriz_resolution ' .

' /vvert_resolution/vcolors_used/vcolors_important ' , fread ( $f1 , 40 ));

$bmp [ ' colors ' ] = pow ( 2 , $bmp [ ' bits_per_pixel ' ]);

if ( $bmp [ ' size_bitmap ' ] == 0 ) $bmp [ ' size_bitmap ' ] = $file [ ' file_size ' ] - $file [ ' bitmap_offset ' ];

$bmp [ ' bytes_per_pixel ' ] = $bmp [ ' bits_per_pixel ' ] / 8 ;

$bmp [ ' bytes_per_pixel2 ' ] = ceil ( $bmp [ ' bytes_per_pixel ' ]);

$bmp [ ' decal ' ] = ( $bmp [ ' width ' ] * $bmp [ ' bytes_per_pixel ' ] / 4 );

$bmp [ ' decal ' ] -= floor ( $bmp [ ' width ' ] * $bmp [ ' bytes_per_pixel ' ] / 4 );

$bmp [ ' decal ' ] = 4 - ( 4 * $bmp [ ' decal ' ]);

if ( $bmp [ ' decal ' ] == 4 ) $bmp [ ' decal ' ] = 0 ;

// 3 : chargement des couleurs de la palette

$palette = array ();

if ( $bmp [ ' colors ' ] < 16777216 )

{

$palette = unpack ( ' v ' . $bmp [ ' colors ' ] , fread ( $f1 , $bmp [ ' colors ' ] * 4 ));

}

// 4 : cr�ation de l'image

$img = fread ( $f1 , $bmp [ ' size_bitmap ' ]);

$vide = chr ( 0 );

$res = imagecreatetruecolor( $bmp [ ' width ' ] , $bmp [ ' height ' ]);

$p = 0 ;

$y = $bmp [ ' height ' ] - 1 ;

while ( $y >= 0 )

{

$x = 0 ;

while ( $x < $bmp [ ' width ' ])

{

if ( $bmp [ ' bits_per_pixel ' ] == 24 )

$color = unpack ( " v " , substr ( $img , $p , 3 ) . $vide );

elseif ( $bmp [ ' bits_per_pixel ' ] == 16 )

{

$color = unpack ( " n " , substr ( $img , $p , 2 ));

$color [ 1 ] = $palette [ $color [ 1 ] + 1 ];

}

elseif ( $bmp [ ' bits_per_pixel ' ] == 8 )

{

$color = unpack ( " n " , $vide . substr ( $img , $p , 1 ));

$color [ 1 ] = $palette [ $color [ 1 ] + 1 ];

}

elseif ( $bmp [ ' bits_per_pixel ' ] == 4 )

{

$color = unpack ( " n " , $vide . substr ( $img , floor ( $p ) , 1 ));

if (( $p * 2 ) % 2 == 0 ) $color [ 1 ] = ( $color [ 1 ] >> 4 ) ; else $color [ 1 ] = ( $color [ 1 ] & 0x0f );

$color [ 1 ] = $palette [ $color [ 1 ] + 1 ];

}

elseif ( $bmp [ ' bits_per_pixel ' ] == 1 )

{

$color = unpack ( " n " , $vide . substr ( $img , floor ( $p ) , 1 ));

if (( $p * 8 ) % 8 == 0 ) $color [ 1 ] = $color [ 1 ] >> 7 ;

elseif (( $p * 8 ) % 8 == 1 ) $color [ 1 ] = ( $color [ 1 ] & 0x40 ) >> 6 ;

elseif (( $p * 8 ) % 8 == 2 ) $color [ 1 ] = ( $color [ 1 ] & 0x20 ) >> 5 ;

elseif (( $p * 8 ) % 8 == 3 ) $color [ 1 ] = ( $color [ 1 ] & 0x10 ) >> 4 ;

elseif (( $p * 8 ) % 8 == 4 ) $color [ 1 ] = ( $color [ 1 ] & 0x8 ) >> 3 ;

elseif (( $p * 8 ) % 8 == 5 ) $color [ 1 ] = ( $color [ 1 ] & 0x4 ) >> 2 ;

elseif (( $p * 8 ) % 8 == 6 ) $color [ 1 ] = ( $color [ 1 ] & 0x2 ) >> 1 ;

elseif (( $p * 8 ) % 8 == 7 ) $color [ 1 ] = ( $color [ 1 ] & 0x1 );

$color [ 1 ] = $palette [ $color [ 1 ] + 1 ];

}

else

return false ;

imagesetpixel( $res , $x , $y , $color [ 1 ]);

$x ++ ;

$p += $bmp [ ' bytes_per_pixel ' ];

}

$y -- ;

$p += $bmp [ ' decal ' ];

}

// fermeture du fichier

fclose ( $f1 );

return $res ;

}

?>

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。