termpix 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d70f5043da6be1e4ce59bed60fea4929521d5ab7d2ea0b93c484ebfe1136081
4
- data.tar.gz: 33fa07448eaf3511b1b49e9d423b5b2cc1ceb6a75a39714eae25c9816c8d119e
3
+ metadata.gz: 34ec8fff70b1018305deaa94931516564e573406a713fac62bbf6691dfe120b8
4
+ data.tar.gz: fcf1056c196bf42680fc1f78b8067db71a64ee342651c6684cb78f34d27f6d1d
5
5
  SHA512:
6
- metadata.gz: 6813654407d15f69d0a9aea24f424c799d44f080e0950106371c448779ed50382e1448909034ede08bca181478ef0a970a21714e61940f03dba79f796660cf47
7
- data.tar.gz: c038cfad651091874e08d6203e4f5551691e23365682c00bd22ef121546892e2cdf3d15b0777277ad7c9f0f86ff65175c82a36252afb7626850597d27f3afb6f
6
+ metadata.gz: f706b1ff612ec9f6f08596833fe66b5fc1b50946c61aa76bb9c8a88ba327d6e595c5607fb439024a94e29d857b603801f577a05876864c8f8493a9bbdbc8a906
7
+ data.tar.gz: 4610351de9645c8dd6855d25f70b800e74b088633a6cf8d3bc02e785f104ac62230e637923bf4c7aa9251973c434e4917aaa6c0c60d15a1d1a27bad7eb4760c6
@@ -116,13 +116,28 @@ module Termpix
116
116
  img_max_w = char_w * max_width
117
117
  img_max_h = char_h * max_height
118
118
 
119
- # Handle EXIF orientation by creating auto-oriented temp file
119
+ # Check if image has EXIF orientation data before auto-orienting
120
+ # This avoids unnecessary temp file creation for most images
120
121
  escaped = Shellwords.escape(image_path)
121
- temp_file = "/tmp/termpix_#{Process.pid}.jpg"
122
122
 
123
- # Auto-orient image to respect EXIF rotation, then get dimensions
124
- system("convert #{escaped}[0] -auto-orient #{temp_file} 2>/dev/null")
125
- display_path = File.exist?(temp_file) ? temp_file : image_path
123
+ # Quick check: only auto-orient if image has EXIF orientation tag
124
+ has_orientation = `identify -format "%[EXIF:Orientation]" #{escaped}[0] 2>/dev/null`.strip
125
+
126
+ if has_orientation && !has_orientation.empty? && has_orientation != "1"
127
+ # Image needs rotation - create cached temp file
128
+ require 'digest'
129
+ file_hash = Digest::MD5.hexdigest(image_path)
130
+ temp_file = "/tmp/termpix_#{file_hash}.jpg"
131
+
132
+ unless File.exist?(temp_file)
133
+ system("convert #{escaped}[0] -auto-orient #{temp_file} 2>/dev/null")
134
+ end
135
+
136
+ display_path = File.exist?(temp_file) ? temp_file : image_path
137
+ else
138
+ # No rotation needed - use original image
139
+ display_path = image_path
140
+ end
126
141
 
127
142
  dimensions = `identify -format "%wx%h" #{Shellwords.escape(display_path)} 2>/dev/null`.strip
128
143
  return if dimensions.empty?
@@ -143,8 +158,7 @@ module Termpix
143
158
  4;
144
159
  3;' | #{@imgdisplay} 2>/dev/null`
145
160
 
146
- # Clean up temp file
147
- File.delete(temp_file) if File.exist?(temp_file) && temp_file != image_path
161
+ # Don't delete temp file - keep it cached for performance
148
162
  end
149
163
 
150
164
  def self.clear(x:, y:, width:, height:, term_width:, term_height:)
@@ -1,3 +1,3 @@
1
1
  module Termpix
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,18 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: termpix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-27 00:00:00.000000000 Z
11
+ date: 2025-11-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: 'Termpix v0.2.0: EXIF auto-orient support preserves correct image orientation.
14
- Provides clean API for displaying images in terminal using best available protocol
15
- (Sixel or w3m). Auto-detects terminal capabilities and falls back gracefully.'
13
+ description: 'Termpix v0.2.1: Performance optimization - only auto-orients images
14
+ with EXIF rotation data. Provides clean API for displaying images in terminal using
15
+ best available protocol (Sixel or w3m). Auto-detects terminal capabilities and falls
16
+ back gracefully.'
16
17
  email: g@isene.com
17
18
  executables: []
18
19
  extensions: []