Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - separare file TIFF
Forum - C# / VB.NET - separare file TIFF

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
bernie (Normal User)
Pro


Messaggi: 149
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 4:40
Giovedì, 11/08/2022
Salve a tutti , avendo un file TIFF , spazio colore cmyk  avrei bisogno di creare 5 file uno per ogni componente , quindi 1 file per il cyan, 1 per il magenta, 1 per il giallo e 1 per il nero .
Qualche suggerimento su cosa iniziare a guardare?
Grazie Bernie  

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1083
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 23:22
Giovedì, 11/08/2022
La vedo dura, qualsiasi immagine carichi in .Net, viene convertita in RGB.
Forse hai una possibilità se le immagini Tiff, sono salvate senza compressione e livelli, le carichi con StreamReader e poi esegui una conversione pixel a pixel.

Ho trovato questa discussione: https://comp.graphics.algorithms.narkive.com/Hz4wAekG/split ...

Dove viene proposto un codice in C#, ma ti dico subito che il risultato da RGB a CMYK non corrisponde per il motivo sopraesposto e contestato anche dallo stesso autore della domanda:

Il codice in C# nella discussione, qui il codice convertito in VB.Net
Codice sorgente - presumibilmente VB.NET

  1. ' Begin code segment.
  2.  
  3.         ' Load the TIFF image; details don't matter.
  4.         Dim bmp As Bitmap = CType(System.Drawing.Bitmap.FromFile("CampioneCMYK.tif"), Bitmap)
  5.         ' Create a bunch of bitmaps, one for each color in CMYK.
  6.         Dim bmpC As New Bitmap(bmp), bmpM As New Bitmap(bmp), bmpY As New Bitmap(bmp), bmpK As New Bitmap(bmp)
  7.         ' These hold our color values.
  8.         Dim c, d As Color
  9.         ' Position in image.
  10.         Dim x, y As Integer
  11.  
  12.         ' CMYK values according to the algorithm listed at the second Google
  13.         'search site.
  14.         Dim vc, vm, vy, vk As Single
  15.  
  16.         ' Scan-line the image.
  17.         For y = 0 To bmp.Height - 1
  18.             For x = 0 To bmp.Width - 1
  19.                 c = bmp.GetPixel(x, y)
  20.  
  21.                 ' Convert from RGB to CMYK.
  22.                 vc = 255.0F - c.R
  23.                 vm = 255.0F - c.G
  24.                 vy = 255.0F - c.B
  25.                 If (vc = 255.0F) AndAlso (vm = 255.0F) AndAlso (vy = 255.0F) Then
  26.                     vc = 0.0F
  27.                     vm = 0.0F
  28.                     vy = 0.0F
  29.                     vk = 255.0F
  30.                 Else
  31.                     If vc < vm Then
  32.                         vk = vc
  33.                     Else
  34.                         vk = vm
  35.                     End If
  36.                     If vk > vy Then
  37.                         vk = vy
  38.                     End If
  39.                     vc = 255.0F * (vc - vk) / (255.0F - vk)
  40.                     vm = 255.0F * (vm - vk) / (255.0F - vk)
  41.                     vy = 255.0F * (vy - vk) / (255.0F - vk)
  42.                 End If
  43.                 ' Set colors in the individual CMYK in-memory images.
  44.                 d = Color.FromArgb(CInt(Math.Truncate(vc)), CInt(Math.Truncate(vc)), CInt(Math.Truncate(vc)))
  45.                 bmpC.SetPixel(x, y, d)
  46.                 d = Color.FromArgb(CInt(Math.Truncate(vm)), CInt(Math.Truncate(vm)), CInt(Math.Truncate(vm)))
  47.                 bmpM.SetPixel(x, y, d)
  48.                 d = Color.FromArgb(CInt(Math.Truncate(vy)), CInt(Math.Truncate(vy)), CInt(Math.Truncate(vy)))
  49.                 bmpY.SetPixel(x, y, d)
  50.                 d = Color.FromArgb(CInt(Math.Truncate(vk)), CInt(Math.Truncate(vk)), CInt(Math.Truncate(vk)))
  51.                 bmpK.SetPixel(x, y, d)
  52.             Next x
  53.         Next y
  54.  
  55.         ' Save each CMYK image.
  56.         bmpC.Save("imageC.tif", System.Drawing.Imaging.ImageFormat.Tiff)
  57.         bmpM.Save("imageM.tif", System.Drawing.Imaging.ImageFormat.Tiff)
  58.         bmpY.Save("imageY.tif", System.Drawing.Imaging.ImageFormat.Tiff)
  59.         bmpK.Save("imageK.tif", System.Drawing.Imaging.ImageFormat.Tiff)
  60.  
  61.         ' End of code segment.



Nell'immagine allegata a sinistra il risultato corretto realizzato con Photoshop, a destra il risultato sbagliato con il programma postato.

Sono interessato all'argomento, posta i tuoi progressi.


Carlo ha allegato un file: Test.jpg (119354 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Carlo il 11/08/2022 alle 23:26


in programmazione tutto è permesso
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 149
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 3:07
Venerdì, 12/08/2022
Ciao Carlo
La conversione da RGB a CMYK senza tenere conto del profilo porta solo rogne, sono pienamente d'accordo. La discussione che hai linkato penso che riguardi esattamente la mia domanda. Da quello che ho potuto capire, verso la fine di parla di usare una libreria non in automatico ma in maniera che non converta in RGB qualsiasi immagine viene caricata.
Adesso provo a vedere cosa trovo.


PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 149
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 19:01
Venerdì, 12/08/2022
Ciao Carlo
stavo guardando questo, da quanto ho capito, questa libreria permette o di convertire in RGB i file caricati , oppure in RAW non li converte ma li lascia nello spazio colore originale .
https://github.com/BitMiracle/libtiff.net
Magari se ci guardi anche tu è meglio .
Ciao Bernie

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1083
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 22:28
Sabato, 13/08/2022
Sembra che serva NET Core 3.1 e VS2022, attualmente non ho nessuno dei 2.

La libreria è completa, ma a te cosa serve?
I tiff li produci tu?
Puoi avvalerti di Photoshop?


in programmazione tutto è permesso
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 149
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 23:47
Sabato, 13/08/2022
Così Carlo
I TIFF li ho da Photoshop, già nello spazio colore giusto e con il profilo incorporato. Devo solo dividerlo nei 4 colori base

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1083
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 12:27
Domenica, 14/08/2022
Servono per creare le lastre di stampa con tanto di retino?
La suddivisione che fa Photoshop non ti va bene?

Se salvi il tiff con nessuna compressione, nessun livello e profondità colore nota, il file diventa analizzabile per l'estrazione, i dati sono in chiaro.

Le 4 immagini risultanti ti vanno bene in bitmap a 256 livelli di grigio?

Sto cercando di capire per vedere se potresti attuare una scorciatoia, un Tiff può contenere di tutto e le variabili sono molteplici....

Ultima modifica effettuata da Carlo il 14/08/2022 alle 12:36


in programmazione tutto è permesso
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 149
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 13:56
Domenica, 14/08/2022
Più o meno, servono per creare i 4 file da passare alla stampa. Photoshop mi converte lo spazio colore, applica il profilo (e la linearizzazione) e salva un tiff CMYK.
Senza compressione, senza livelli.
Per quando riguarda i 256 livelli di grigio si, vanno bene, per il bitmap, dovrei provare.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1083
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 14:14
Domenica, 14/08/2022
Testo quotato

Postato originariamente da bernie:

Più o meno, servono per creare i 4 file da passare alla stampa. Photoshop mi converte lo spazio colore, applica il profilo (e la linearizzazione) e salva un tiff CMYK.
Senza compressione, senza livelli.
Per quando riguarda i 256 livelli di grigio si, vanno bene, per il bitmap, dovrei provare.  



Photoshop permette di salvare in scala di grigio ma non solo, anche le 4 immagini che rappresentano i canali C M Y K, separatamente.

Ultima modifica effettuata da Carlo il 14/08/2022 alle 14:16


in programmazione tutto è permesso
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo