PHP仿GD打开BMP图片
PHP仿GD打开BMP格式图片
/** * 类似GD库打开图片, 打开bmp格式图片 * $file : 图片路径 */ function imagecreatefrombmp($file) { global $CurrentBit, $echoMode; $f = fopen($file,"r"); $Header = fread($f,2); if($Header =="BM") { $Size = freaddword($f); $Reserved1 = freadword($f); $Reserved2 = freadword($f); $FirstByteOfImage = freaddword($f); $SizeBITMAPINFOHEADER = freaddword($f); $Width = freaddword($f); $Height = freaddword($f); $biPlanes = freadword($f); $biBitCount = freadword($f); $RLECompression = freaddword($f); $WidthxHeight = freaddword($f); $biXPelsPerMeter = freaddword($f); $biYPelsPerMeter = freaddword($f); $NumberOfPalettesUsed = freaddword($f); $NumberOfImportantColors = freaddword($f); if($biBitCount < 24) { $img = imagecreate($Width, $Height); $Colors = pow(2, $biBitCount); for($p=0; $p<$Colors; $p++) { $B = freadbyte($f); $G = freadbyte($f); $R = freadbyte($f); $Reserved = freadbyte($f); $Palette[] = imagecolorallocate($img, $R, $G, $B); } if($RLECompression == 0) { $Zbytek = (4-ceil(($Width/(8/$biBitCount)))%4)%4; for($y=$Height-1; $y>=0; $y--) { $CurrentBit = 0; for($x=0; $x<$Width; $x++) { $C = freadbits($f, $biBitCount); imagesetpixel($img, $x, $y, $Palette[$C]); } if($CurrentBit != 0) { freadbyte($f); } for($g=0; $g<$Zbytek; $g++) { freadbyte($f); } } } } if($RLECompression == 1) //$BI_RLE8 { $y = $Height; $pocetb = 0; while(true) { $y--; $prefix = freadbyte($f); $suffix = freadbyte($f); $pocetb += 2; $echoit = false; if($echoit) { echo"Prefix: $prefix Suffix: $suffix<BR>"; } if(($prefix == 0) && ($suffix == 1)) { break; } if(feof($f)) { break; } while(!(($prefix == 0) && ($suffix == 0))) { if($prefix==0) { $pocet = $suffix; $Data .= fread($f,$pocet); $pocetb += $pocet; if($pocetb%2 == 1) { freadbyte($f); $pocetb++; } } if($prefix > 0) { $pocet = $prefix; for($r=0; $r<$pocet; $r++) { $Data.=chr($suffix); } } $prefix = freadbyte($f); $suffix = freadbyte($f); $pocetb += 2; if($echoit) { echo"Prefix: $prefix Suffix: $suffix<BR>"; } } for($x=0; $x<strlen($Data); $x++) { imagesetpixel($img,$x,$y,$Palette[ord($Data[$x])]); } $Data=""; } } if($RLECompression == 2) { $y = $Height; $pocetb = 0; while(true) { $y--; $prefix = freadbyte($f); $suffix = freadbyte($f); $pocetb += 2; $echoit = false; if($echoit) { echo"Prefix: $prefix Suffix: $suffix<BR>"; } if(($prefix == 0) && ($suffix==1)) { break; } if(feof($f)) { break; } while(!(($prefix == 0) && ($suffix == 0))) { if($prefix == 0) { $pocet = $suffix; $CurrentBit = 0; for($h=0; $h<$pocet; $h++) { $Data.=chr(freadbits($f,4)); } if($CurrentBit != 0) { freadbits($f,4); } $pocetb += ceil(($pocet/2)); if($pocetb%2 == 1) { freadbyte($f); $pocetb++; } } if($prefix > 0) { $pocet = $prefix; $i = 0; for($r=0; $r<$pocet; $r++) { if($i%2 == 0) { $Data .= chr($suffix%16); } else { $Data .= chr(floor($suffix/16)); } $i++; } } $prefix = freadbyte($f); $suffix = freadbyte($f); $pocetb += 2; if($echoit) { echo"Prefix: $prefix Suffix: $suffix<BR>"; } } for($x=0; $x<strlen($Data); $x++) { imagesetpixel($img, $x, $y, $Palette[ord($Data[$x])]); } $Data=""; } } if($biBitCount == 24) { $img = imagecreatetruecolor($Width, $Height); $Zbytek = $Width%4; for($y=$Height-1; $y>=0; $y--) { for($x=0; $x<$Width; $x++) { $B = freadbyte($f); $G = freadbyte($f); $R = freadbyte($f); $color = imagecolorexact($img, $R, $G, $B); if($color==-1) { $color=imagecolorallocate($img, $R, $G, $B); } imagesetpixel($img, $x, $y, $color); } for($z=0; $z<$Zbytek; $z++) { freadbyte($f); } } } return $img; } fclose($f); } function freadbyte($f) { return ord(fread($f, 1)); } function freadword($f) { $b1 = freadbyte($f); $b2 = freadbyte($f); return $b2*256 + $b1; } function freaddword($f) { $b1 = freadword($f); $b2 = freadword($f); return $b2*65536 + $b1; }
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
1 몇 주 전
By DDD
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
Atomfall에서 크레인 제어 키 카드를 찾을 수 있습니다
1 몇 주 전
By DDD

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7416
15


Cakephp 튜토리얼
1359
52


Steam의 계정 이름 형식은 무엇입니까?
76
11


Win11 활성화 키 영구
26
19

