script(avatars): face-crop con OpenCV + regen thumbnails
Re-procesa los 724 avatares col_*.png (imágenes horizontales con foto+texto) recortándolos cuadrados centrados en la cara antes de mostrarlos como avatar circular. Resuelve la queja del #39 sobre las fotos "stretcheadas". - face_crop_avatar.py: Haar cascade frontal+profile, padding 0.6×, fallback inteligente para imágenes horizontales (recorta lado izquierdo), reduce side cuando padding no cabe (no invade lado del texto) - regen_avatars.php: borra thumbnails viejos + regenera con la nueva imagen para todos los attachments de uploads/autores/joomla/ Resultado: 100 caras detectadas + 624 fallbacks (mayoría placeholders sin foto real) + 0 fail. Attachment IDs preservados. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
// Regenera thumbnails de los attachments creados en /uploads/autores/joomla/
|
||||
// Borra los thumbnails viejos y los recrea con las versiones face-cropped.
|
||||
require '/var/www/html/wp-load.php';
|
||||
require_once ABSPATH . 'wp-admin/includes/image.php';
|
||||
|
||||
global $wpdb;
|
||||
$rows = $wpdb->get_results(
|
||||
"SELECT ID FROM {$wpdb->posts}
|
||||
WHERE post_type='attachment'
|
||||
AND guid LIKE '%/autores/joomla/%'"
|
||||
);
|
||||
echo 'Attachments: ' . count($rows) . PHP_EOL;
|
||||
|
||||
$uploads_basedir = wp_upload_dir()['basedir'];
|
||||
$ok = 0; $fail = 0;
|
||||
foreach ($rows as $r) {
|
||||
$aid = (int) $r->ID;
|
||||
$file = get_attached_file($aid);
|
||||
if (!$file || !file_exists($file)) { $fail++; continue; }
|
||||
|
||||
// Borrar thumbnails viejos del attachment (todas las variantes -WxH)
|
||||
$old_meta = wp_get_attachment_metadata($aid);
|
||||
if (!empty($old_meta['sizes'])) {
|
||||
$dir = dirname($file);
|
||||
foreach ($old_meta['sizes'] as $s) {
|
||||
$thumb = $dir . '/' . $s['file'];
|
||||
if (file_exists($thumb)) @unlink($thumb);
|
||||
}
|
||||
}
|
||||
// Regenerar
|
||||
$meta = wp_generate_attachment_metadata($aid, $file);
|
||||
if ($meta) {
|
||||
wp_update_attachment_metadata($aid, $meta);
|
||||
$ok++;
|
||||
} else {
|
||||
$fail++;
|
||||
}
|
||||
}
|
||||
echo "OK: $ok, FAIL: $fail" . PHP_EOL;
|
||||
Reference in New Issue
Block a user