When a product album is added to the ecshop background, the thumbnail ecshop bmp cannot be generated in bmp format.
When the ecshop background generates Image product albums in batches, the bmp format cannot generate thumbnails. how can this problem be solved? What I want to achieve is to generate an image in bmp format!
Reply to discussion (solution)
Ecshop itself does not support bmp image generation and reduction. You must first convert the image to gif, jpg, or png.
Ecshop itself does not support bmp image generation and reduction. You must first convert the image to gif, jpg, or png.
What I want is to make ecshop support this generation graph! What should we do?
You can download ImageCreateFromBMP. php
Then modify your program.
Ecshop itself does not support bmp image generation and reduction. You must first convert the image to gif, jpg, or png.
What I want is to make ecshop support this generation graph! What should we do?
Schemdes/cls_image.php is the image processing library of ecshop. you can use the ImageCreateFromBMP function to expand it on your own.
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 ; }