Home  >  Article  >  Backend Development  >  ecshop后台添加商品相册的时候bmp格式的无法生成缩略图

ecshop后台添加商品相册的时候bmp格式的无法生成缩略图

WBOY
WBOYOriginal
2016-06-23 14:12:30976browse

ecshop bmp

ecshop后台批量生成图片商品相册的时候bmp格式的无法生成缩略图求怎么解决? 我想达到的效果就是能够生成bmp格式的图片!

回复讨论(解决方案)

ecshop本身不支持bmp图像生成缩微图。你要先转换为gif/jpg/png其中一种

ecshop本身不支持bmp图像生成缩微图。你要先转换为gif/jpg/png其中一种
我 想要的就是让ecshop支持这种生成图!咋办呢?

你可下载一个 ImageCreateFromBMP.php
然后改一下你的程序


ecshop本身不支持bmp图像生成缩微图。你要先转换为gif/jpg/png其中一种
我 想要的就是让ecshop支持这种生成图!咋办呢?
includes/cls_image.php是ecshop的图片处理库,你可以用ImageCreateFromBMP这个函数自行扩展

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 ; } 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn