Socket
Book a DemoInstallSign in
Socket

@aivue/image-caption

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aivue/image-caption

AI-powered image captioning for Vue.js applications using Hugging Face BLIP models

1.0.0
latest
Source
npmnpm
Version published
Maintainers
1
Created
Source

@aivue/image-caption

npm version License: MIT Vue 3 TypeScript

πŸ–ΌοΈ AI-powered image captioning for Vue.js applications using OpenAI Vision API

Generate intelligent, contextual captions for images using GPT-4 Vision, the most advanced computer vision model available. Perfect for accessibility, content management, social media, and AI-powered applications.

✨ Features

  • πŸ€– GPT-4 Vision - Most advanced image understanding AI
  • 🎯 Easy Integration - Drop-in Vue component with minimal setup
  • πŸ”‘ Simple Authentication - Just add your OpenAI API key
  • πŸ“± Drag & Drop Upload - Intuitive file upload with preview
  • 🌐 URL Support - Caption images from URLs
  • πŸ“Š Batch Processing - Process multiple images at once
  • πŸ“ˆ History Tracking - Keep track of generated captions
  • πŸ’Ύ Export Data - Export captions as JSON or CSV
  • 🎨 Beautiful UI - Modern, responsive design
  • πŸ”§ TypeScript Support - Full type definitions included
  • πŸ“± Mobile Friendly - Works great on all devices

πŸš€ Quick Start

Installation

npm install @aivue/image-caption

Basic Usage

<template>
  <div>
    <AiImageCaption
      :api-key="openaiApiKey"
      @caption-generated="onCaptionGenerated"
    />
  </div>
</template>

<script setup>
import { AiImageCaption } from '@aivue/image-caption';
import '@aivue/image-caption/dist/image-caption.css';

const openaiApiKey = import.meta.env.VITE_OPENAI_API_KEY;

const onCaptionGenerated = (result) => {
  console.log('Generated caption:', result.caption);
};
</script>

Environment Variables

Set your API key in environment variables:

# .env
VITE_OPENAI_API_KEY=your-openai-api-key

πŸ“– API Reference

Component Props

PropTypeDefaultDescription
apiKeystring''OpenAI API key
modelstring'gpt-4o'AI model to use
autoCaptionbooleanfalseAuto-generate caption on image upload
maxHistorySizenumber20Maximum number of captions to keep in history

Component Events

EventPayloadDescription
caption-generatedImageCaptionResultFired when caption is successfully generated
caption-errorErrorFired when caption generation fails
image-uploadedImageUploadEventFired when image is uploaded
image-removedvoidFired when image is removed

Composable Usage

<script setup>
import { useImageCaption } from '@aivue/image-caption';

const {
  generateCaption,
  uploadImage,
  isProcessing,
  result,
  error,
  history
} = useImageCaption({
  config: {
    apiKey: import.meta.env.VITE_OPENAI_API_KEY,
    model: 'gpt-4o'
  }
});

// Generate caption for uploaded file
const handleFileUpload = async (file) => {
  try {
    await uploadImage(file);
    const result = await generateCaption(file);
    console.log('Caption:', result.caption);
  } catch (error) {
    console.error('Failed:', error);
  }
};
</script>

🎯 Available Models

ModelIDDescriptionBest For
GPT-4ogpt-4oLatest and most capable vision modelGeneral use, highest quality
GPT-4o Minigpt-4o-miniFaster and more cost-effectiveHigh volume, cost-sensitive apps
GPT-4 Turbogpt-4-turboHigh-intelligence vision modelDetailed analysis, complex scenes

πŸ”§ Configuration Options

interface ImageCaptionConfig {
  apiKey?: string;                    // OpenAI API key
  model?: string;                     // Model ID to use ('gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo')
}

interface ImageCaptionOptions {
  model?: string;                     // Override model for this request
  prompt?: string;                    // Custom prompt for caption generation
  detail?: 'low' | 'high' | 'auto';   // Image analysis detail level
  maxTokens?: number;                 // Maximum response tokens (300)
  temperature?: number;               // Creativity level (0.7)
}

🎨 Styling

The component comes with beautiful default styles, but you can customize them:

/* Override default styles */
.ai-image-caption {
  --primary-color: #your-color;
  --border-radius: 12px;
  --spacing: 16px;
}

/* Custom upload area */
.upload-area {
  border: 2px dashed #your-color;
  background: #your-background;
}

/* Custom button styles */
.generate-btn {
  background: linear-gradient(135deg, #your-gradient);
}

πŸ“Š Advanced Usage

Batch Processing

<script setup>
import { useImageCaption } from '@aivue/image-caption';

const { generateBatchCaptions } = useImageCaption();

const processBatch = async (imageFiles) => {
  const result = await generateBatchCaptions({
    images: imageFiles,
    options: {
      model: 'gpt-4o',
      prompt: 'Describe this image in detail for accessibility purposes.',
      detail: 'high'
    }
  });

  console.log(`Processed ${result.successCount} images`);
  console.log('Results:', result.results);
};
</script>

Custom Image Processing

<script setup>
import { useImageCaption, resizeImageFile } from '@aivue/image-caption';

const { generateCaption } = useImageCaption();

const processLargeImage = async (file) => {
  // Resize large images for faster processing
  const resizedFile = await resizeImageFile(file, {
    maxWidth: 800,
    maxHeight: 600,
    quality: 0.8
  });
  
  const result = await generateCaption(resizedFile);
  return result;
};
</script>

Export History

<script setup>
import { useImageCaption } from '@aivue/image-caption';

const { exportHistory, history } = useImageCaption();

const downloadHistory = () => {
  const jsonData = exportHistory('json');
  const blob = new Blob([jsonData], { type: 'application/json' });
  const url = URL.createObjectURL(blob);
  
  const a = document.createElement('a');
  a.href = url;
  a.download = 'image-captions.json';
  a.click();
  
  URL.revokeObjectURL(url);
};
</script>

πŸ”‘ Getting Your API Key

  • Go to OpenAI Platform
  • Sign up for an account
  • Go to API Keys
  • Create a new secret key
  • Copy your key (starts with "sk-") and use it as your API key

Pricing:

  • GPT-4o: $5.00 / 1M input tokens, $15.00 / 1M output tokens
  • GPT-4o Mini: $0.15 / 1M input tokens, $0.60 / 1M output tokens
  • GPT-4 Turbo: $10.00 / 1M input tokens, $30.00 / 1M output tokens

🌟 Examples

Accessibility Enhancement

<template>
  <div>
    <img :src="imageUrl" :alt="altText" />
    <AiImageCaption 
      :api-key="apiKey"
      @caption-generated="updateAltText"
    />
  </div>
</template>

<script setup>
const altText = ref('');

const updateAltText = (result) => {
  altText.value = result.caption;
};
</script>

Social Media Integration

<template>
  <div class="social-post">
    <AiImageCaption 
      :api-key="apiKey"
      :auto-caption="true"
      @caption-generated="suggestHashtags"
    />
    <textarea v-model="postText" placeholder="Write your post..."></textarea>
  </div>
</template>

<script setup>
const postText = ref('');

const suggestHashtags = (result) => {
  const hashtags = generateHashtags(result.caption);
  postText.value += `\n\n${hashtags}`;
};
</script>

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

πŸ“„ License

MIT License - see LICENSE for details.

Made with ❀️ by reachbrt

Keywords

vue

FAQs

Package last updated on 01 Jun 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚑️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.