के लिए बाइट सरणी में छवि और स्थान का आकार बदलें मैंने इसे खोजने की कोशिश की है और जहां तक मैं देख सकता हूं वहां कोड होना चाहिए, लेकिन मेरी क्रिस्टल रिपोर्ट में परिणामी छवि 1 के बजाय 5 पेज है कुछ कारण!CrystalReports BlobField
असल में, मेरे पास ब्लॉबफिल्ड से ली गई एक पूर्ण पृष्ठ छवि के साथ एक क्रिस्टल रिपोर्ट है जो पूरी तरह से काम करती है जब स्रोत छवि 240 9 पिक्सल चौड़ी और 3436 पिक्सल उच्च @ 300 डीपीआई होती है।
जब मैं 2436 उच्च @ 200 डीपीआई द्वारा एक स्रोत छवि है कि 1700 चौड़ा है इस्तेमाल करने की कोशिश, छवि ऊंचाई बहुत अधिक है और अगले पृष्ठ थोड़ा
मैंने सोचा था कि "कोई समस्या नहीं पर रिपोर्ट बंद लटका हुआ है, मैं बस छवि का आकार बदलूंगा और रिपोर्ट सही तरीके से प्रदर्शित होगी "लेकिन मुझे ऐसा करने में बड़ी कठिनाई हो रही है .. इस कोड का उपयोग मैं इस समय कर रहा हूं-" सामान्य "छवि आकार और इस कोड का उपयोग करते समय, सबकुछ प्रदर्शित होता है रिपोर्ट में ठीक है, लेकिन अगर मुझे आकार बदलने की जरूरत है, तो यह बड़े पैमाने पर व्यापक और पांच पृष्ठों पर फैला है जो इसे अकेले छोड़ने से भी बदतर है! :(
Dim fs As System.IO.FileStream = New System.IO.FileStream(FilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Dim Image() As Byte = New Byte(fs.Length - 1) {}
fs.Read(Image, 0, CType(fs.Length, Integer))
fs.Close()
'Byte[] to image
Dim imgMemoryStream = New IO.MemoryStream(Image)
Dim myImage = Drawing.Image.FromStream(imgMemoryStream)
' Check if image is 2409 wide, if it's not then resize to 2409 while preserving aspect ratio. WIN.
If myImage.Width <> 2409 Then
MsgBox("myimage before: " & myImage.Width & " by " & myImage.Height)
myImage = ImageResize(myImage, 3436, 2409)
MsgBox("myimage after: " & myImage.Width & " by " & myImage.Height)
Else
MsgBox("myimage (already correct for printing): " & myImage.Width & " by " & myImage.Height)
End If
Dim imgMemoryStream2 As IO.MemoryStream = New IO.MemoryStream()
myImage.Save(imgMemoryStream2, System.Drawing.Imaging.ImageFormat.Jpeg)
Image = imgMemoryStream2.ToArray
objDataRow(strImageField) = Image
तो मैं एक बाइट सरणी में मूल छवि हथियाने रहा हूँ (के रूप में मुझे लगता है छवि का आकार "सामान्य" है डिफ़ॉल्ट रूप से और बस सीधे डाल देगा BlobField में) और फिर इसे परिवर्तित करने में वापस छवि आकार की जांच करने के लिए एक छवि। यदि आकार "सामान्य" नहीं है, तो मैं छवि का आकार बदल रहा हूं, फिर इसे रिपोर्ट में ब्लॉबफिल्ड को फ़ीड करने के लिए इसे बाइट सरणी में परिवर्तित कर रहा हूं।
यह छवि का आकार बदल गया है कोड:
Public Shared Function ImageResize(ByVal image As System.Drawing.Image, _
ByVal height As Int32, ByVal width As Int32) As System.Drawing.Image
Dim bitmap As System.Drawing.Bitmap = New System.Drawing.Bitmap(width, height, image.PixelFormat)
If bitmap.PixelFormat = Drawing.Imaging.PixelFormat.Format1bppIndexed Or _
bitmap.PixelFormat = Drawing.Imaging.PixelFormat.Format4bppIndexed Or _
bitmap.PixelFormat = Drawing.Imaging.PixelFormat.Format8bppIndexed Or _
bitmap.PixelFormat = Drawing.Imaging.PixelFormat.Undefined Or _
bitmap.PixelFormat = Drawing.Imaging.PixelFormat.DontCare Or _
bitmap.PixelFormat = Drawing.Imaging.PixelFormat.Format16bppArgb1555 Or _
bitmap.PixelFormat = Drawing.Imaging.PixelFormat.Format16bppGrayScale Then
Throw New NotSupportedException("Pixel format of the image is not supported.")
End If
Dim graphicsImage As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bitmap)
graphicsImage.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
graphicsImage.InterpolationMode = Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
graphicsImage.DrawImage(image, 0, 0, bitmap.Width, bitmap.Height)
graphicsImage.Dispose()
Return bitmap
End Function
शायद मैं समस्या को गलत तरीके से संबोधित कर रहा हूं लेकिन मूल सहयोगी मैं क्रिस्टल रिपोर्ट ब्लॉबफिल्ड में किसी भी आकार की छवियों को छोड़ने की अनुमति देने का एक तरीका खोजने की कोशिश कर रहा हूं और उन्हें एक पूर्ण ए 4 पृष्ठ लेना है।
आपके उत्तर डेव लिए बहुत-बहुत धन्यवाद! मैं वास्तव में रिपोर्ट ऑब्जेक्ट को संशोधित करना समाप्त कर दिया जिसने छवि को दिखाया, लेकिन मैं अभी भी इस सवाल का सीधा जवाब प्रदान करने की सराहना करता हूं :) मैं कोड पर वापस जाउंगा और देख सकता हूं कि आपका कैसा है। क्या आप मुझे बता सकते हैं कि मैंने जिस कोड का उपयोग करने का प्रयास किया है, उसके साथ क्या गलत है? इसमें msgstr "मैंने जो संकल्प बदल दिया है, उसकी पुष्टि करने वाले संदेश को पुष्टि कर रहा है, फिर भी जब मैंने रिपोर्ट में उस आकार का ब्लॉब डाल दिया तो यह भारी है! – user2101511
मैंने इस समस्या के समाधान के लिए लंबे समय तक देखा, यहां तक कि मेरे रिपोर्टिंग लड़के को भी कार्य सौंपा गया और वह केवल क्रिस्टल रिपोर्ट का उपयोग करके समाधान नहीं ढूंढ सका। तो हमें समस्या को हल करने के लिए ऊपर के साथ आना पड़ा और यह हमारे लिए बहुत अच्छा काम करता है। हालांकि, हम छोटे कंपनी लोगो का उपयोग कर रहे हैं, आदि आकार बदलने के बाद गुणवत्ता में थोड़ी गिरावट आई है, और हमारे उपयोग के कारण यह एक बड़ा सौदा नहीं है। आपका मिलेज भिन्न हो सकता है। –