MySQL 데이터베이스에 작은 엄지 손가락을 저장하고 있습니다. PHP를 사용하면 이미지에서 미리보기 이미지를 만들고 그 이미지를 BLOB 열에 저장하기 만하면됩니다.이미지를 MySQL BLOB에 저장하십시오.
MySQL은 바이너리 이미지를 Base64 문자열로 데이터베이스에 저장하는 것으로 보입니다. 문제는 MySQL이 jpg
파일 대신 application/octet-stream
파일로 저장하는 것입니다.
<?php
$encoded_string = "....";
$imgdata = base64_decode($encoded_string);
$f = finfo_open();
$mime_type = finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE);
echo $mime_type;
?>
MySQL은 자동으로 Base64로 문자열 내 이미지를 변환 할 수 있습니다 :
나는 내가이 코드를 사용하여 Base64로 문자열을 테스트하기 때문에 알아? 그렇다면 JPG로 저장하는 방법이 있습니까?
나는 파일 시스템에 엄지 손가락을 절약 잘 알고,하지만 불행히도 그렇지 않다와 나는 파일 시스템에 저장에 대한 답을 찾고 있지 않다. 나는 그것이 왜 octed stream
으로 저장되었는지 알고 싶습니다. 내가 지금처럼 엄지 손가락을 만들 WideImage
을 사용하고
:
$thumb = \WideImage::load ($filepath)
->resize(117, 88)
->crop ('center', 'center', 117, 88)
->asString('jpg');
변수 $thumb
유효 이진 데이터가 포함되어 있습니다. 나는 그것을 인쇄 할 수 있고 좋게 보이기 때문에, 또한 fwrite
는 좋은 JPG를 쓴다.
그런 다음 INSERT 쿼리를 사용하여 데이터베이스에 저장합니다. 하지만 다시 SELECT를하면 다시 octed stream
형식이됩니다.
파일 시스템에 이미지를 저장하고 MySQL을 통해 이미지를 참조해야합니다. –
mysql은 blob을 저장하기 위해 base64를 사용하지 않습니다. base64는 공간이 비효율적 인 형식이며 원시 바이너리 버전에 비해 33 %의 비용이 든다. MySQL은 mime-type에 대해서도 신경 쓸 필요가 없었다. 블롭이라면 일련의 비트로 진행됩니다. 그것은 jpg, pdf 또는 텍스트 형식의 할머니의 사과 파이 요리법 인 경우 중요하지 않습니다. –
이미지를 얻으려면 방울을 울릴 수 있습니다. 나는 mysql이 MIME 형식에 대해 정말로 신경 쓰지 않는다고 생각한다. –