=== Image Watermark ===
Contributors: dfactory
Donate link: http://www.dfactory.co/
Tags: image, images, watermark, watermarking, protection
Requires at least: 6.0
Requires PHP: 7.0
Tested up to: 7.0
Stable tag: 2.0.10
License: MIT License
License URI: http://opensource.org/licenses/MIT

Secure and brand your images with automatic watermarks. Apply image or text overlays to new uploads and bulk process existing Media Library images with ease.

== Description ==

Enhance your WordPress site's image security and branding. Image Watermark allows you to apply image or text overlays to new uploads and bulk process existing Media Library images with ease.

= Key Features:  =

* **Watermark Types**: Choose from image-based or text-based watermarks with full customization.
* **Flexible Application**: Automatic watermarking on uploads, manual/bulk apply/remove via Media Library.
* **Advanced Customization**: Position watermarks precisely, adjust sizes, opacity, and more.
* **Backup & Restore**: Secure backups for easy watermark removal.
* **Image Protection**: Prevent copying via right-click, drag-and-drop, and developer tools.
* **Technical Excellence**: Supports JPEG, PNG, WebP; ImageMagick/GD engines; preserves metadata.

Perfect for photographers, bloggers, and businesses looking to safeguard their visual content.

For more information, check out the [plugin page](http://www.dfactory.co/products/image-watermark/), [documentation](http://www.dfactory.co/docs/image-watermark/), or [support forum](http://www.dfactory.co/support/forum/image-watermark/).

= Feature Breakdown: =

**Watermarking Types:**
* Support for image-based watermarks (upload custom images as watermarks)
* Support for text-based watermarks (customizable fonts, colors, and sizes)
* Automatic watermarking on new uploads to the Media Library
* Manual and bulk watermarking for existing images (apply or remove via Media Library actions)

**Customization & Settings:**
* Flexible watermark positioning (9 alignment options with pixel or percentage-based offsets)
* Three watermark size modes: original, custom dimensions, or scaled to image size
* Adjustable watermark transparency and opacity
* Watermark image preview for real-time adjustments
* Selective application: Choose specific post types or enable everywhere (including frontend uploads)
* Image format selection (baseline or progressive JPEG)
* Configurable image quality settings

**Backup & Management:**
* Automatic image backup functionality (stores originals for easy restoration)
* Option to remove watermarks (restores from backups when available)
* Secure backup storage with .htaccess protection

**Image Protection:**
* Disable right-click context menus on images
* Prevent image copying via drag-and-drop
* Block access to developer tools for image inspection
* Customizable protection notice/toast message displayed to users attempting to copy images

**Technical Information:**
* Support for JPEG, PNG, and WebP image formats
* Dual image processing engines: ImageMagick (preferred) with GD library fallback
* EXIF and IPTC metadata preservation (where supported)
* Cache-busting for immediate thumbnail updates after watermark changes
* Translation-ready with included .pot file

== Installation ==

1. **Install the Plugin**:
   - Via WordPress.org: Go to Plugins > Add New, search for "Image Watermark," and click Install Now.
   - Manual Upload: Download the plugin ZIP from WordPress.org, then upload it via Plugins > Add New > Upload Plugin.

2. **Activate the Plugin**:
   - After installation, activate Image Watermark through the 'Plugins' menu in WordPress.

3. **Configure Settings**:
   - Navigate to Settings > Watermark in your WordPress admin dashboard.
   - Choose your watermark type (image or text) and upload/select a watermark image if using image-based.
   - Adjust positioning, size, opacity, and other options as needed.
   - Select post types for automatic watermarking or enable for all uploads.

4. **Enable and Test**:
   - Toggle the plugin on to start automatic watermarking for new uploads.
   - For existing images, go to Media Library > Bulk Select, choose images, and use the "Apply Watermark" bulk action.
   - Preview watermarks in the settings page and test on a sample image to ensure everything works.

**Requirements**: WordPress 6.0+, PHP 7.4+, and either GD or ImageMagick library. If issues arise, check server compatibility in Settings > Watermark > Status tab.

== Frequently Asked Questions ==

No questions yet.

== Screenshots ==

1. screenshot-1.png
2. screenshot-2.png
3. screenshot-3.png

== Changelog ==

= 2.0.10 =
* New: Add small-image threshold controls for watermark eligibility

= 2.0.9 =
* Fix: Gutenberg auto-watermarking for admin media uploads
* Fix: Admin media frame state guard on post editor screens
* Tweak: Add WordPress PHPUnit coverage and unified test command

= 2.0.8 =
* New: Optional preservation of file timestamps for backup and restore

= 2.0.7 =
* Fix: GD text alpha cast issue in watermark rendering
* Fix: Text watermark validation blocking legitimate inputs
* Tweak: Shared watermark validation and improved error handling
* Tweak: Enhanced nav tab styling with slug-specific classes

= 2.0.6 =
* Fix: "You are not allowed to perform this action" errors with specific validation messages
* Fix: False-positive success responses for apply/remove watermark failures
* Fix: Error message display bug in single-image watermark actions
* Tweak: Enhanced error messages (backup not found, unsupported file type)
* Tweak: Added debug logging capability for watermark actions (WP_DEBUG_LOG)

= 2.0.5 =
* Fix: Persist review notice dismissal in options sanitizer to prevent notice reappearing

= 2.0.4 =
* New: Apply Watermark To radio control for better UI clarity
* Fix: Settings persistence issue with checkbox options
* Fix: JavaScript scope pollution in settings page

= 2.0.3 =
* New: Improved settings UI
* Fix: Apply/remove watermark for post media modal
* Fix: Improve media modal watermark actions UI and messaging
* Tweak: New color picker and switch field type in settings.

= 2.0.2 =
* Fix: Preserve PNG transparency when applying watermark using GD library.
* Fix: Prevent applying watermark during watermark image upload
* Fix: Migrate legacy watermark image setting into 2.0.x options

= 2.0.1 =
* Fix: Settings save issue for unchecked options and CPT scope

= 2.0.0 =
* New: Text watermark support
* New: Enhanced watermark preview with real-time updates.
* New: Support for additional watermark alignment options and percentage-based scaling.
* Tweak: Improved user interface for settings page with modern design elements.
* Tweak: Optimized image processing for faster bulk operations.
* Fix: Enhanced error handling for unsupported image formats.

= 1.9.1 =
* New: Bulk Apply/Remove Watermark buttons in Media Library grid view with native styling.
* Fix: Cache-busting for thumbnails and attachment details so watermark changes show immediately.
* Fix: Bulk actions now ignore unsupported/non-image files for safer processing.

= 1.9.0 =
* Fix: Watermarked image not refreshing in attachment edit screen after watermark is applied or removed
* Fix: Updated image reload selectors to support modern WordPress attachment details page structure
* Tweak: Complete modern rewrite of Right click blocking feature

= 1.8.0 =
* New: WebP image files support

= 1.7.4 =
* Fix: Potential security issue with capability check - props WordFence
* Fix: Saving post types settings issue
* Tweak: WordPress 6.5 compatibility

= 1.7.3 =
* Tweak: WordPress 6.2 compatibility
* Tweak: PHP 8.2 compatibility

= 1.7.2 =
* Fix: Missing admin-media.js file

= 1.7.1 =
* Fix: Watermark option not available in Media Library

= 1.7.0 =
* Tweak: WordPress 5.9 compatibility
* Tweak: PHP 8.x compatibility

= 1.6.6 =
* Tweak: PHP 7.3 compatibility

= 1.6.5 =
* Fix: Improved support for PHP 7 and above
* Fix: Backup folders handling of date based organized uploads

= 1.6.4 =
* Fix: Transparent PNG issues with ImageMagick library

= 1.6.3.1 =
* Fix: The plugin directory upload fix.

= 1.6.3 =
* Fix: PNG files watermarking issue

= 1.6.2 =
* New: Option to select watermark offset unit - pixels or percentages
* Tweak: Added values to slider settings fields

= 1.6.1 =
* Fix: Minor bug with AJAX requests, thanks to [JoryHogeveen](https://github.com/JoryHogeveen)
* Fix: Prevent watermarking the watermark image, thanks to [JoryHogeveen](https://github.com/JoryHogeveen)
* Tweak: Code cleanup

= 1.6.0 =
* New: Image backup functionality, thanks to [JoryHogeveen](https://github.com/JoryHogeveen)
* New: Option to remove watermark (if backup is available)

= 1.5.6 =
* New: PHP image processing library option, if more than one available.
* Fix: Manual / Media library watermarking not working.
* Fix: Image sizes not being generated properly in GD library.

= 1.5.5 =
* Fix: Determine AJAX frontend or backend request
* Tweak: Remove Polish and Russian translations, in favor of GlotPress

= 1.5.4 =
* Fix: Use of undefined constant DOING_AJAX

= 1.5.3 =
* New: ImageMagic support

= 1.5.2 =
* Tweak: Switch from wp_get_referer() to DOING_AJAX and is_admin(). 

= 1.5.1 =
* New: Introducing [plugin documentation](http://www.dfactory.co/docs/image-watermark/)
* Tweak: Improved transparent watermark support

= 1.5.0 =
* Tweak: Plugins setting adjusted to WP settings API
* Tweak: General code cleanup
* Tweak: Added Media Library bulk watermarking notice

= 1.4.1 =
* New: Hungarian translation, thanks to Meszaros Tamas

= 1.4.0 =
* New: Option to donate this plugin :)

= 1.3.3 =
* New: Russian translation, thanks to [Sly](http://wpguru.ru)

= 1.3.2 =
* New: Chinese translation, thanks to [xiaoyaole](http://www.luoxiao123.cn/)

= 1.3.1 =
* Fix: Option to disable right click on images not working 

= 1.3.0 =
* Tweak: Manual watermarking now works even if selected post types are selected
* Tweak: UI improvements for WP 3.8
* Fix: Image protection options not saving properly

= 1.2.1 =
* New: German translation, thanks to Matthias Siebler

= 1.2.0 =
* New: Frontend watermarking option (for front-end upload plugins and custom front-end upload code)
* New: Introducing iw_watermark_display filter
* New: Option to delete all plugin data on deactivation
* Tweak: Rewritten watermark application method
* Tweak: UI enhancements for settings page

= 1.1.4 =
* New: Arabic translation, thanks to Hassan Hisham

= 1.1.3 =
* New: Introducing API hooks: iw_before_apply_watermark, iw_after_apply_watermark, iw_watermark_options
* Fix: Wrong watermark watermark path
* Fix: Final fix (hopefully) for getimagesize() error

= 1.1.2 =
* New: Image quality option
* New: Image format selection (progressive or baseline)
* Fix: Error when getimagesize() is not available on some servers
* Tweak: Files & class naming conventions

= 1.1.1 =
* New: Added option to enable or disable manual watermarking in Media Library
* Fix: Apply watermark option not visible in Media Library actions
* Fix: Warning on full size images

= 1.1.0 =
* New: Bulk watermark - Apply watermark in Media Library actions
* New: Watermark images already uploaded to Media Library

= 1.0.3 =
* Fix: Error during upload of file types other than images (png, jpg)
* Fix: Limit watermark file types to png, gif, jpg
* Tweak: Validation for watermark size and transparency values
* Tweak: Remove unnecessary functions
* Tweak: Code cleanup
* Tweak: Added more code comments
* Tweak: Small css changes

= 1.0.2 =
* New: Add watermark to custom image sizes registered in theme
* Tweak: Admin notices on settings page if no watermark image selected
* Tweak: JavaScript enqueuing on front-end
* Tweak: General code cleanup
* Tweak: Changed label for enabling image protection for logged-in users

= 1.0.1 =
* Fix: Using image ID instead of image URL during image upload

= 1.0.0 =
Initial release

== Upgrade Notice ==

= 2.0.10 =
Adds controls to skip watermarking small images based on minimum dimensions.