标签: 设计

  • 让博客图片动起来!WordPress实现实况图预览(附插件)

    让博客图片动起来!WordPress实现实况图预览(附插件)

    本文参考 https://www.mancs.cn/856 修改为wp插件免费开源 滑到最下面获取下载链接吧。

    演示图

    认识Live Photo:超越静态的影像革命

    技术本质:Live Photo是苹果开发的动态影像格式(.livephoto),通过HEVC视频(3秒)与JPEG图片的封装组合,实现「按压查看动态效果」的创新交互。用户在WordPress中嵌入这类文件时,传统方案仅显示静态封面。

    官方调用方案解析(LivePhotosKit技术栈)

    Apple官方提供LivePhotosKit JS库实现跨平台支持,其运作流程如下:

    1. 文件规范
      • 必须同时提供.jpg静态图与.mov视频文件
      • 视频时长限制:1.5-3秒
      • 分辨率建议:720p及以上
    2. 基础调用代码

    WordPress深度整合实战(分步详解)

    以下内容来自 https://www.mancs.cn/856

    实现原理:

    WordPress 中引入 LivePhotosKit JS 库来支持实况图,并创建一个自定义古腾堡区块
    首先,我们需要在 WordPress 中引入 LivePhotosKit JS 库
    在你的主题的 functions.php 文件中添加以下代码:

    function enqueue_livephotoskit_script() {
     wp_enqueue_script('livephotoskit-js', 'https://cdn.apple-livephotoskit.com/lpk/1/livephotoskit.js', array(), null, true);
    }
    add_action('wp_enqueue_scripts', 'enqueue_livephotoskit_script');

    这段代码将在你的 WordPress 站点上加载 LivePhotosKit JS 库

    接下来,我们将创建一个自定义 Gutenberg 区块,使用户能够方便地在区块编辑器中添加支持实况图的区域

    function register_custom_live_photos_block() {
     wp_register_script(
     'custom-live-photos-block',
     get_template_directory_uri() . '/block.js',
     array('wp-blocks', 'wp-element', 'wp-editor', 'wp-components', 'wp-i18n'),
     filemtime(get_template_directory() . '/block.js')
     );
    
     register_block_type('custom/live-photos-block', array(
     'editor_script' => 'custom-live-photos-block',
     'render_callback' => 'render_custom_live_photos_block'
     ));
    }
    add_action('init', 'register_custom_live_photos_block');
    
    function render_custom_live_photos_block($attributes) {
     if (!isset($attributes['photoURL']) || !isset($attributes['videoURL'])) {
     return '';
     }
    
     $width = '100%';
     $height = '300px'; // Example fixed height, adjust as necessary
    
     return sprintf(
     '<div class="live-photo-wrapper" style="width:%s; height:%s; position:relative;">
     <div data-live-photo data-photo-src="%s" data-video-src="%s" style="width:100%%; height:100%%;"></div>
     </div>',
     esc_attr($width),
     esc_attr($height),
     esc_url($attributes['photoURL']),
     esc_url($attributes['videoURL'])
     );
    }
    

    主题跟目录创建一个 JavaScript 文件 block.js,并添加以下代码

    (function (blocks, editor, element, components) {
     var el = element.createElement;
     var MediaUpload = editor.MediaUpload;
     var InspectorControls = editor.InspectorControls;
     var TextControl = components.TextControl;
    
     blocks.registerBlockType('custom/live-photos-block', {
     title: 'Live Photos Block',
     icon: 'camera',
     category: 'media',
     attributes: {
     photoURL: {
     type: 'string',
     default: ''
     },
     videoURL: {
     type: 'string',
     default: ''
     },
     width: {
     type: 'number',
     default: 400
     },
     height: {
     type: 'number',
     default: 300
     }
     },
    
     edit: function (props) {
     var attributes = props.attributes;
     var setAttributes = props.setAttributes;
    
     return el(
     'div',
     { className: props.className },
     el('p', {}, '选择图片和视频:'),
     el(
     MediaUpload,
     {
     onSelect: function (media) {
     setAttributes({ photoURL: media.url });
     },
     allowedTypes: 'image',
     render: function (obj) {
     return el(components.Button, {
     className: attributes.photoURL ? 'image-button' : 'button button-large',
     onClick: obj.open
     },
     !attributes.photoURL ? '选择图片' : el('img', { src: attributes.photoURL })
     );
     }
     }
     ),
     el(
     MediaUpload,
     {
     onSelect: function (media) {
     setAttributes({ videoURL: media.url });
     },
     allowedTypes: 'video',
     render: function (obj) {
     return el(components.Button, {
     className: 'button button-large',
     onClick: obj.open
     },
     '选择视频'
     );
     }
     }
     ),
     el(InspectorControls, {},
     el(TextControl, {
     label: '宽度(px)',
     value: attributes.width,
     onChange: function (value) {
     setAttributes({ width: parseInt(value, 10) || 0 });
     }
     }),
     el(TextControl, {
     label: '高度(px)',
     value: attributes.height,
     onChange: function (value) {
     setAttributes({ height: parseInt(value, 10) || 0 });
     }
     })
     )
     );
     },
    
     save: function () {
     // 后台通过 PHP 渲染,前端保存为空
     return null;
     }
     });
    }(
     window.wp.blocks,
     window.wp.editor,
     window.wp.element,
     window.wp.components
    ));

    插件版本

    本站把它改为插件 使用方法如下 安装启用插件 在编辑器内找到 LIve Photos Block 按图操作。

  • 使用React构建从 App Store 上获取应用图标的项目

    使用React构建从 App Store 上获取应用图标的项目

    Github地址 https://github.com/YuKongA/HQ-ICON

    演示图

    演示站

    https://www.naigou.cn/app/

    使用方法

    本地安装node.js和npm

    克隆项目

    安装依赖

    进入项目目录后,需要安装所有必需的依赖项。在命令行中执行:

    这会根据package.json文件中的dependencies和devDependencies部分下载并安装所需的包。

    开发模式运行

    为了开始开发工作,并利用热重载等开发特性,可以运行:

    这条命令将启动Vite开发服务器,并且通常会在终端中打印出类似“localhost:3000”的地址,你可以在浏览器中访问该地址查看应用。

    构建生产版本

    当你完成开发并准备部署时,可以通过以下命令构建生产版本:

    此命令会在项目根目录下生成一个dist文件夹,里面包含了优化后的静态资源,适合部署到任何Web服务器上。

      注意:

      由于 Apple 目前限制了 Android UA 查询,只会返回一个名称完全符合的查询结果。所以 Android 用户请使用隔壁仓库的 App 版本。

    1. 价值200万的超椭圆LOGO生成小工具

      价值200万的超椭圆LOGO生成小工具

      小米LOGO 原文地址 http://www.mi.com/a/h/19823.html

      小米的新Logo由日本设计师原研哉设计,采用“超椭圆”形状,结合了圆形和方形的特点,旨在展现品牌的灵动与亲和力。颜色上变得更加柔和,强调了“Alive”(生动)的概念,体现了小米希望通过科技让生活更加美好的愿景。这个新标识是小米品牌升级的一部分,意在以更全面、强大的姿态面对未来。

      最近要给博客换套个logo样式,这个logo是之前花了50块买的,其实还算可以,加上了一个简单的圆角样式,看起来其实也还行。但是圆角太直接,看着有点不太舒服。

      于是我找到了之前小米的logo公式,

      在网上找了一堆裁剪工具 例如 https://mi-logo.lvwzhen.com/

      但是他的不能拿自己的图片进行裁剪 只有下方两种样式,不太符合我的要求。

      于是,在AI工具的帮助下,写了一个可以裁剪自己图片为类小米logo的工具。

      代码分享