Fix PR 14591 - improve blurhash creation

This commit is contained in:
Michael 2024-12-09 21:24:28 +00:00
parent 9a8554e40a
commit 17c335238f
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;
}
}
/**
@ -526,7 +526,7 @@ class Image
$width = $this->getWidth();
$height = $this->getHeight();
if ((!$width)|| (!$height)) {
if ((!$width) || (!$height)) {
return false;
}
@ -733,7 +733,7 @@ class Image
}
}
$stream = fopen('php://memory','r+');
$stream = fopen('php://memory', 'r+');
switch ($this->getImageType()) {
case IMAGETYPE_PNG:
@ -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,11 +366,11 @@ 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];
Hook::callAll('ocr-detection', $media);
@ -454,7 +454,7 @@ class Images
{
return self::getBBCodeByUrl(
DI::baseUrl() . '/photos/' . $nickname . '/image/' . $resource_id,
DI::baseUrl() . '/photo/' . $resource_id . '-' . $preview. $ext,
DI::baseUrl() . '/photo/' . $resource_id . '-' . $preview . $ext,
$description
);
}