Merge pull request #14592 from annando/fix-14591

Fix PR 14591 - improve blurhash creation
This commit is contained in:
Hypolite Petovan 2024-12-09 21:37:56 -05:00 committed by GitHub
commit 69345432e1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 20 additions and 19 deletions

View file

@ -83,7 +83,7 @@ class Avatar
$filename = self::getFilename($contact['url']);
$timestamp = time();
$fields['blurhash'] = $image->getBlurHash();
$fields['blurhash'] = $image->getBlurHash($img_str);
$fields['photo'] = self::storeAvatarCache($image, $filename, Proxy::PIXEL_SMALL, $timestamp);
$fields['thumb'] = self::storeAvatarCache($image, $filename, Proxy::PIXEL_THUMB, $timestamp);

View file

@ -2320,7 +2320,7 @@ class Contact
if ($fetchResult->isSuccess() && !empty($img_str)) {
$image = new Image($img_str, $fetchResult->getContentType(), $avatar);
if ($image->isValid()) {
$update_fields['blurhash'] = $image->getBlurHash();
$update_fields['blurhash'] = $image->getBlurHash($img_str);
} else {
return;
}

View file

@ -434,6 +434,7 @@ class Photo
$data = '';
$backend_ref = '';
$storage = '';
$img_str = $image->asString();
try {
if (DBA::isResult($existing_photo)) {
@ -442,9 +443,9 @@ class Photo
} else {
$storage = DI::storage();
}
$backend_ref = $storage->put($image->asString(), $backend_ref);
$backend_ref = $storage->put($img_str, $backend_ref);
} catch (InvalidClassStorageException $storageException) {
$data = $image->asString();
$data = $img_str;
}
$fields = [
@ -452,7 +453,7 @@ class Photo
'contact-id' => $cid,
'guid' => $guid,
'resource-id' => $rid,
'hash' => md5($image->asString()),
'hash' => md5($img_str),
'created' => $created,
'edited' => DateTimeFormat::utcNow(),
'filename' => basename($filename),
@ -460,8 +461,8 @@ class Photo
'album' => $album,
'height' => $image->getHeight(),
'width' => $image->getWidth(),
'datasize' => strlen($image->asString()),
'blurhash' => $image->getBlurHash(),
'datasize' => strlen($img_str),
'blurhash' => $image->getBlurHash($img_str),
'data' => $data,
'scale' => $scale,
'photo-type' => $type,

View file

@ -130,12 +130,12 @@ class Link
if (Images::isSupportedMimeType($fields['mimetype'])) {
$img_str = $curlResult->getBodyString();
$image = new Image($img_str, $fields['mimetype'], $url);
$image = new Image($img_str, $fields['mimetype'], $url, false);
if ($image->isValid()) {
$fields['mimetype'] = $image->getType();
$fields['width'] = $image->getWidth();
$fields['height'] = $image->getHeight();
$fields['blurhash'] = $image->getBlurHash();
$fields['blurhash'] = $image->getBlurHash($img_str);
}
}

View file

@ -105,7 +105,8 @@ class Image
* @param string $data
* @return boolean
*/
private function isAnimatedWebP(string $data) {
private function isAnimatedWebP(string $data)
{
$header_format = 'A4Riff/I1Filesize/A4Webp/A4Vp/A74Chunk';
$header = @unpack($header_format, $data);
@ -356,7 +357,6 @@ class Image
} else {
return false;
}
}
/**
@ -768,9 +768,9 @@ class Image
* @param string $img_str
* @return string
*/
public function getBlurHash(): string
public function getBlurHash(string $img_str = ''): string
{
$image = clone($this);
$image = new Image($img_str ?: $this->asString(), $this->getType(), $this->filename, false);
if (empty($image) || !$this->isValid()) {
return '';
}

View file

@ -366,10 +366,10 @@ class Images
return [];
}
$image = new Image($img_str, '', $url);
$image = new Image($img_str, '', $url, false);
if ($image->isValid()) {
$data['blurhash'] = $image->getBlurHash();
$data['blurhash'] = $image->getBlurHash($img_str);
if ($ocr) {
$media = ['img_str' => $img_str];