Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla
OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla
OPPO Watch X2 Mini è uno smartwatch compatto capace di offrire un'esperienza completa di monitoraggio della salute e fitness con una cassa da 43 mm che può adattarsi a qualsiasi tipo di polso, dal più grande al - soprattutto - più piccolo. Con l'architettura dual-chip e un'autonomia che può coprire due giorni con tranquillità, rappresenta la soluzione ideale per chi cerca prestazioni premium in un formato ridotto.
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Dopo il recente lancio della serie Xiaomi 15T di Monaco, vi parliamo oggi della versione più performante della nuova famiglia, ovvero Xiaomi 15 T Pro. Vi raccontiamo la nostra prova nel dettaglio, spiegando perché a questo prezzo e in questa fascia, questo smartphone ha davvero senso tenerlo in seria considerazione.
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer ha ampliato la sua offerta professionale con il TravelMate P6 14 AI, un notebook ultraleggero e robusto pensato per chi lavora in mobilità. Certificato Copilot+ PC, combina design premium, autonomia elevata e piattaforma Intel Core Ultra Serie 2 con funzionalità AI, garantendo sicurezza, affidabilità e produttività per l'utenza business moderna.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-02-2004, 11:15   #1
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
[java]ColorModel CMYK

Non vi do tregua...

Devo ottenere una conversione da rgb a cmyk e so che devo passare per questa operazione:

ICC_ColorSpace iccp = new ICC_ColorSpace(ICC_Profile.getInstance(ICC_Profile.icSigCmykData)); (o almeno credo )

reperita dal seguente sito:

http://java.sun.com/products/java-me...rs/jaifaq.html

Ma non so come ottenere il ColorModel.

Arigrazie

(se avete altre soluzioni ripeto non esitate a postarle)

Ultima modifica di leox_80 : 24-02-2004 alle 11:19.
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 12:22   #2
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Io proverei con un java.awt.image.ComponentColorModel

ComponentColorModel(ColorSpace colorSpace, boolean hasAlpha, boolean isAlphaPremultiplied, int transparency, int transferType)


gli passi il tuo ICC_color space, gli altri parametri li ricavi dall'immagine da convertire (dovrebbe esserci un metodo in BufferedImage per ognuno) e poi via, alla bersagliera.

Dici che non può funzionare?
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 13:42   #3
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
che mal di testa ragazzi ... evviva i tempi ristretti!!!!!!!

Mo vedo che riesco a tirarne fuori, grazie ancora, se trovo la soluzione posto anche quella (:
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 13:59   #4
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
ColorModel colorModel = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.TYPE_CMYK),bits, false, false, 1, DataBuffer.TYPE_BYTE);

ecco come dovrebbe essere fatto,

dico dovrebbe perchè il risultato è:

java.lang.IllegalArgumentException: Unknown color space
at java.awt.color.ColorSpace.getInstance(ColorSpace.java:329)
at Image.immagini.ris.main(ris.java:36)
Exception in thread "main"

mannaggia la miseriaccia!!!!!!!!


il problema è il ColoSpace.TYPE_CMYK perchè se lo setto a ColoSpace.CS_GRAY il risultato è una immagine a scala di grigio!
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 14:12   #5
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Non riesci a passargli il color space di prima?

ICC_ColorSpace iccp = new ICC_ColorSpace(ICC_Profile.getInstance(ICC_Profile.icSigCmykData));

In pratica dovresti (credo) usare un costruttore del JRE standard passandogli un "colorspace" di JAI...me so' spiegato bbene no?
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 14:15   #6
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
MADOOOOONNA non ci posso credere, ho cambiato il codice in

ICC_ColorSpace iccp = new ICC_ColorSpace(ICC_Profile.getInstance(ICC_Profile.icSigCmykData));
ColorModel colorModel = new ComponentColorModel(iccp ,bits, true, false, 1, DataBuffer.TYPE_BYTE);

e pensa un pò?!?!?!?!?!?!?!?!?!?!

non funziona lo stesso... stesso errore
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 14:41   #7
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Codice:
try {	
	BufferedInputStream inBuffer = new BufferedInputStream(
		new FileInputStream("Z:\\Software Downloads\\JAICMM\\CMYK.pf"));
	
	ICC_Profile cmykProfile = ICC_Profile.getInstance(inBuffer);
	
	ICC_ColorSpace cmykColorSpace = new ICC_ColorSpace(cmykProfile);
	
} catch(IOException e) {
	System.out.println(e);
}
Qui la costruzione dell'ICC_ColorSpace non sembra generare errori.

Ho usato il metodo getInstace(InputStream) passandogli come stream un flusso diretto ad uno dei profili ICC scaricati dal sito di Sun.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 14:47   #8
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
mi manderesti i profili?

oppure il link da dove scaricarli

Grazie
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 14:51   #9
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
http://java.sun.com/products/java-me...oad-1_1_2.html

scorri la pagina verso il basso, c'è il pacchetto JAICMM
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 15:02   #10
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
Grazie ancora, l'ho scaricato e implementato!

Ora non mi completa il file tiff UAAAAAAAAAAAAAAAAH.

Bella idea comunque. Grazie ancora per l'aiuto
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 15:02   #11
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Qui mi viene una cosa di questo tipo:

Codice:
try {
	BufferedInputStream inBuffer = new BufferedInputStream(
		new FileInputStream("Z:\\Software Downloads\\JAICMM\\CMYK.pf"));
	
	ICC_Profile cmykProfile = ICC_Profile.getInstance(inBuffer);
	
	ICC_ColorSpace cmykColorSpace = new ICC_ColorSpace(cmykProfile);
	
	BufferedImage image = ImageIO.read(new File("z:\\marmotta.jpg"));
		
	ColorConvertOp cmykConversion = new ColorConvertOp(
		image.getColorModel().getColorSpace(),
		cmykColorSpace,
		null);
		
	BufferedImage convertedImage = cmykConversion.filter(image, null);
	
} catch(IOException e) {
	System.out.println(e);
}
Senza usare JAI (i profili funzionano anche con il JRE standard, 1.4 o sup.) e senza ColorModel.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 15:14   #12
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
si ma io ho a che fare con delle tiff e non delle jpeg...

ora provo poi ti faccio sapere
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 16:21   #13
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
public class ris{
public static void main(String args[]) throws IOException{
final int XRES_TAG = 282;
final int YRES_TAG = 283;
int[] resolution = { 304, 1};

String input = "C:/a/01.tif";
String output = "C:/a/nuovo.tiff";

FileSeekableStream stream = new FileSeekableStream(input);
//RenderedImage image1 =(RenderedImage) JAI.create("stream",stream);
RenderedOp image3 = JAI.create("stream",stream);
image3.getAsBufferedImage();

TIFFField xRes = new TIFFField(XRES_TAG, TIFFField.TIFF_SRATIONAL, 1, new int[][] { resolution });
TIFFField yRes = new TIFFField(YRES_TAG, TIFFField.TIFF_SRATIONAL, 1, new int[][] { resolution });
TIFFEncodeParam tep = new TIFFEncodeParam();

tep.setExtraFields(new TIFFField[] { xRes, yRes});

OutputStream out = new SeekableOutputStream(new RandomAccessFile(output,"rw"));
tep.setCompression(TIFFEncodeParam.COMPRESSION_NONE);


//ICC_ColorSpace iccp = new ICC_ColorSpace(ICC_Profile.getInstance(ICC_Profile.icSigCmyData));
BufferedInputStream inBuffer = new BufferedInputStream(new FileInputStream("C:/profili/CMYK.pf"));

ICC_Profile cmykProfile = ICC_Profile.getInstance(inBuffer);

ICC_ColorSpace cmykColorSpace = new ICC_ColorSpace(cmykProfile);

ColorConvertOp cmykConversion = new ColorConvertOp(image3.getColorModel().getColorSpace(),cmykColorSpace, null);

BufferedImage convertedImage = cmykConversion.filter(image3.getAsBufferedImage(), null);


ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF",out, tep);
encoder.encode((RenderedImage)convertedImage);
out.close();

}
}

Questo è quanto. La conversione è effettuata e anche se photoshop dice che è in cmyk io dico di no.
Questo perchè l'immagine che viene fuori e molto più scura dell'originale e se si va con il contagocce a vedere la gamma dei colori, cambiano soltanto i valori di c m e y ma mai di k! (anche sul nero).
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 17:14   #14
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Andando per tentativi proverei allora a far creare all'engine Java un Buffer compatibile prima di copiargli sopra i dati convertiti.

Codice:
BufferedInputStream inBuffer = new BufferedInputStream(
	new FileInputStream("Z:\\Software Downloads\\JAICMM\\CMYK.pf"));

ICC_Profile cmykProfile = ICC_Profile.getInstance(inBuffer);

ICC_ColorSpace cmykColorSpace = new ICC_ColorSpace(cmykProfile);

BufferedImage image = ImageIO.read(new File("z:\\marmotta.jpg"));
	
ColorConvertOp cmykConversion = new ColorConvertOp(
	image.getColorModel().getColorSpace(),
	cmykColorSpace,
	null);
	
ComponentColorModel colorModel = new ComponentColorModel(
	cmykColorSpace,
	false,
	image.isAlphaPremultiplied(),
	image.getTransparency(),
	image.getRaster().getDataBuffer().getDataType());

BufferedImage convertedImage = cmykConversion.createCompatibleDestImage(image, colorModel);

cmykConversion.filter(image, convertedImage);
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 24-02-2004, 19:48   #15
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
Ok... provo domani che oggi sono finito!!!

Grazie.. poi ti faccio sapere
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 08:24   #16
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
Purtroppo il risultato è lo stesso. Avevo già provato ma dall'alto della mia ignoranza ero sicuro di aver toppato qualcosa!
Comunque a me da errore con il metodo getTransparency()... dove lo hai trovato?

BufferedInputStream inBuffer = new BufferedInputStream(new FileInputStream("C:/profile/CMYK.pf"));
ICC_Profile cmykProfile = ICC_Profile.getInstance(inBuffer);
ICC_ColorSpace cmykColorSpace = new ICC_ColorSpace(cmykProfile);

ColorConvertOp cmykConversion = new ColorConvertOp(image3.getColorModel().getColorSpace(),cmykColorSpace, null);

ComponentColorModel colorModel = new ComponentColorModel(cmykColorSpace,true,image3.getAsBufferedImage().isAlphaPremultiplied(),1,image3.getAsBufferedImage().getRaster().getDataBuffer().getDataType());

BufferedImage comp = cmykConversion.createCompatibleDestImage(image3.getAsBufferedImage(), colorModel);
BufferedImage convertedImage = cmykConversion.filter(image3.getAsBufferedImage(), comp);

ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF",out, tep);
encoder.encode((RenderedImage)convertedImage);
out.close();
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 10:16   #17
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
riskio di gettare la spugna...

comunque grazie PGI sei stato un grande (:
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 12:22   #18
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Calma e gesso.

Allora, c'è una svista (colpa mia) proprio su quel getTransparency() che è disponibile solo su Java 1.5.

getTransparency() restituisce un intero che può avere il valore

Transparency.OPAQUE, se l'immagine non ha un canale Alpha (es. BMP)
Transparency.BITMASK se l'immagine ha 1 bit di trasparenza (es. GIF)
Transparency.TRANSLUCENT se l'immagine ha più di 1 bit di trasparenza (es. PNG)

Prima dell'1.5 c'è lo stesso metodo per il ColorModel:

bufferedImage.getColorModel().getTransparency().
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 13:38   #19
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
La calma c'è... il gesso me lo sono sniffato!

Ho provato a fare la conversione di una semplice jpg:

BufferedInputStream inBuffer = new BufferedInputStream(
new FileInputStream("C:/profili/CMYK.pf"));

ICC_Profile cmykProfile = ICC_Profile.getInstance(inBuffer);
ICC_ColorSpace cmykColorSpace = new ICC_ColorSpace(cmykProfile);

BufferedImage image = ImageIO.read(new File("C:/a/01.jpg"));

ColorConvertOp cmykConversion = new ColorConvertOp(
image.getColorModel().getColorSpace(),
cmykColorSpace,
null);

BufferedImage convertedImage = cmykConversion.filter(image, null);

File f = new File("C:/a/nuovo.jpg");

ImageIO.write(convertedImage, "JPEG", f);


E l'immagine creata non esiste!!! Ditemelo che devo sbattere la capoccia su uno spigolo!

Più che non esistere non viene visualizzata.
leox_80 è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2004, 13:55   #20
leox_80
Member
 
Iscritto dal: Feb 2004
Messaggi: 67
Il problema sta nell'operazione di conversione!

Se voglio salvare l'immagine così come l'ho aperta posso farlo, quella convertita invece la salva ma con qualche errore interno che non la fa visualizzare.
leox_80 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla OPPO Watch X2 Mini, lo smartwatch compatto a cui...
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione Xiaomi 15T Pro, è lui il nuovo best buy? ...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Lunedì sera tiratela lunga: a mez...
Il prossimo pieghevole di Huawei potrebb...
Euro digitale nel 2027 con app e infrast...
Galaxy S26 Ultra: tra le novità c...
OneDrive avrà presto una nuova app per W...
Il nuovo OnePlus 15 è pronto: il ...
Non serve essere Prime: 7 offerte bomba ...
Ci sono un sacco di prodotti con lo scon...
Xbox Game Pass, gli aumenti di prezzo pe...
I nuovi top di gamma di HONOR sono pront...
Il Garante della Privacy ha bloccato Clo...
C'è un nuovo operatore virtuale s...
Google Chrome non si ferma più: &...
Tenstorrent produrrà chip nelle f...
Tutte le offerte HOT di Amazon: Galaxy S...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:58.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v