2013-03-06 5 views
5

का उपयोग कर पीडीएफ को उच्च गुणवत्ता वाले जेपीजी में कनवर्ट करें मैं अपने बालों को फाड़ रहा हूं।PHP और ImageMagick

मेरे पास 300 डीपीआई पीडीएफ है जो मैं 300 डीपीआई जेपीजी में बदलना चाहता हूं जो 2550x3300 है। मुझे बताया गया है कि ImageMagick ऐसा कर सकता है, इसलिए मुझे छवि मैगिक काम करने के लिए मिलता है, लेकिन यह केवल एक जेपीजी देता है जो मूल पीडीएफ आकार के बारे में 1/5 आकार का होता है।

यह स्रोत छवि नहीं है - मैंने इसे कई उच्च गुणवत्ता वाले पीडीएफ के साथ किया है और उन सभी को एक ही समस्या है।

विचारों के लिए StackOverflow परिशोध करने के बाद, यह है कि क्या मैं का उपयोग करने के साथ आया है:

$im = new imagick($srcimg); 
$im->setImageResolution(2550,3300); 
$im->setImageFormat('jpeg'); 
$im->setImageCompression(imagick::COMPRESSION_JPEG); 
$im->setImageCompressionQuality(100); 
$im->writeImage($targetimg); 
$im->clear(); 
$im->destroy(); 

लेकिन यह अभी भी काम नहीं करता।

मैंने जेपीजी का आकार बदलने के लिए $ img-> resizeImage() का उपयोग करने का भी प्रयास किया है, लेकिन फिर सही आकार पर यह वास्तव में खराब गुणवत्ता पर आता है।

पूरी तरह से स्टंप। आपकी सहायता की सराहना!

उत्तर

6

आपको छवि को पढ़ने से पहले संकल्प को सेट करने की आवश्यकता है। कृपया see this comment on the manual - देखें कि यह काम करेगा या नहीं।

+0

यदि मैंने पहले सेट इमेज रेसोल्यूशन रखा है, तो कक्षा अभी तक घोषित नहीं की गई है। अगर मैं $ im = new imagick() करता हूं, तो $ im-> setImageResolution, फिर $ im-> readImage ($ srcimg), मुझे यह त्रुटि मिलती है: घातक त्रुटि: संदेश के साथ अपवाद अपवाद 'ImagickException' 'खाली इमेजिक को संसाधित नहीं कर सकता ऑब्जेक्ट 'में ... –

+1

रिक्त ऑब्जेक्ट पर '$ im-> setResolution()' का उपयोग करने का प्रयास करें (मैन्युअल पर' इमेजिक :: सेटरोल्यूशन 'के लिए नोट्स देखें) – dakdad

+0

हां - बस यह किया और मुझे यह काम करने के लिए मिला, हालांकि केवल 300,300 की आवश्यकता थी। यह चाल ऑर्डर को स्विच कर रही थी और setImageResolution के बजाय setResolution का उपयोग कर रही थी। धन्यवाद! –

4

यह सही तरीका होगा, गुणवत्ता में सुधार होगा।

$im = new imagick(); 
$im->setResolution(300, 300); 
$im->readImage($srcimg); 
$im->setImageFormat('jpeg'); 
$im->setImageCompression(imagick::COMPRESSION_JPEG); 
$im->setImageCompressionQuality(100); 
$im->writeImage($targetimg); 
$im->clear(); 
$im->destroy();